current commit
261026.11 · doc: document the alpha release process
name: Major Release

on:
  schedule:
    - cron: 0 0 15 2 *  # runs at midnight UTC every 15 February

permissions:
  contents: read

jobs:
  create-issue:
    if: github.repository == 'nodejs/node'
    runs-on: ubuntu-slim
    permissions:
      issues: write
    steps:
      - name: Check for release schedule
        id: check-date
        run: |
          # Get the current month and day
          MONTH=$(date +'%m')
          DAY=$(date +'%d')
          # We'll create the reminder issue two months prior the release
          if [[ "$MONTH" == "02" ]] && [[ "$DAY" == "15" ]]; then
            echo "create_issue=true" >> "$GITHUB_ENV"
          fi
      - name: Retrieve next major release info from nodejs/Release
        if: env.create_issue == 'true'
        run: |
          curl -L https://github.com/nodejs/Release/raw/HEAD/schedule.json | \
          jq -r 'to_entries | map(select(.value.start | strptime("%Y-%m-%d") | mktime > now)) | first | "VERSION=" + .key + "\nRELEASE_DATE=" + .value.start' >> "$GITHUB_ENV"
      - name: Compute max date for landing semver-major PRs
        if: env.create_issue == 'true'
        run: |
          echo "PR_MAX_DATE=$(date -d "$RELEASE_DATE -1 month" +%Y-%m-%d)" >> "$GITHUB_ENV"
      - name: Create release announcement issue
        if: env.create_issue == 'true'
        run: |
         gh issue create --repo "${GITHUB_REPOSITORY}" \
           --title "Upcoming Node.js Major Release ($VERSION)" \
           --body-file -<<EOF
            A reminder that the next Node.js **SemVer Major release** is scheduled for **${RELEASE_DATE}**.
            All commits that were landed until **${PR_MAX_DATE}** (one month prior to the release) will be included in the next semver major release. Please ensure that any necessary preparations are made in advance.
            For more details on the release process, consult the [Node.js Release Working Group repository](https://github.com/nodejs/release).

            cc: @nodejs/collaborators
         EOF
        env:
          GH_TOKEN: ${{ github.token }}