From 659894f85163bd8a494e451e522fa0019244cd23 Mon Sep 17 00:00:00 2001 From: Sam Seay Date: Thu, 1 Dec 2022 21:36:26 +1300 Subject: [PATCH] Use workflow dispatch that now works with GITHUB_TOKEN (#35705) --- .github/workflows/release-code-freeze.yml | 273 +++++++++++----------- 1 file changed, 140 insertions(+), 133 deletions(-) diff --git a/.github/workflows/release-code-freeze.yml b/.github/workflows/release-code-freeze.yml index 4173434e13f..90f308c6824 100644 --- a/.github/workflows/release-code-freeze.yml +++ b/.github/workflows/release-code-freeze.yml @@ -1,17 +1,17 @@ -name: "Release: Code freeze" +name: 'Release: Code freeze' on: - schedule: - - cron: '0 16 * * 4' # Run at 1600 UTC on Thursdays. - workflow_dispatch: - inputs: - timeOverride: - description: "Time Override: The time to use in checking whether the action should run (default: 'now')." - default: 'now' - skipSlackPing: - description: "Skip Slack Ping: If true, the Slack ping will be skipped (useful for testing)" - type: boolean - slackChannelOverride: - description: "Slack Channel Override: The channel ID to send the Slack ping about the freeze" + schedule: + - cron: '0 16 * * 4' # Run at 1600 UTC on Thursdays. + workflow_dispatch: + inputs: + timeOverride: + description: "Time Override: The time to use in checking whether the action should run (default: 'now')." + default: 'now' + skipSlackPing: + description: 'Skip Slack Ping: If true, the Slack ping will be skipped (useful for testing)' + type: boolean + slackChannelOverride: + description: 'Slack Channel Override: The channel ID to send the Slack ping about the freeze' env: TIME_OVERRIDE: ${{ inputs.timeOverride }} @@ -21,142 +21,149 @@ env: GIT_AUTHOR_EMAIL: 'no-reply@woocommerce.com' jobs: - verify-code-freeze: - name: "Verify that today is the day of the code freeze" - runs-on: ubuntu-20.04 - outputs: - freeze: ${{ steps.check-freeze.outputs.freeze }} - steps: - - name: "Install PHP" - uses: shivammathur/setup-php@v2 - with: - php-version: '7.4' + verify-code-freeze: + name: 'Verify that today is the day of the code freeze' + runs-on: ubuntu-20.04 + outputs: + freeze: ${{ steps.check-freeze.outputs.freeze }} + steps: + - name: 'Install PHP' + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' - - name: "Check whether today is the code freeze day" - id: check-freeze - shell: php {0} - run: | - 14 ) { - echo '::set-output name=freeze::1'; - } else { - echo '::set-output name=freeze::0'; - } + // If 26 days from now isn't the second Tuesday, then it's not code freeze day. + if ( 'Tuesday' !== $release_day_of_week || $release_day_of_month < 8 || $release_day_of_month > 14 ) { + echo '::set-output name=freeze::1'; + } else { + echo '::set-output name=freeze::0'; + } - maybe-create-next-milestone-and-release-branch: - name: "Maybe create next milestone and release branch" - runs-on: ubuntu-20.04 - needs: verify-code-freeze - if: needs.verify-code-freeze.outputs.freeze == 0 - outputs: - branch: ${{ steps.freeze.outputs.branch }} - release_version: ${{ steps.freeze.outputs.release_version }} - next_version: ${{ steps.freeze.outputs.next_version }} - steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - fetch-depth: 100 + maybe-create-next-milestone-and-release-branch: + name: 'Maybe create next milestone and release branch' + runs-on: ubuntu-20.04 + needs: verify-code-freeze + if: needs.verify-code-freeze.outputs.freeze == 0 + outputs: + branch: ${{ steps.freeze.outputs.branch }} + release_version: ${{ steps.freeze.outputs.release_version }} + next_version: ${{ steps.freeze.outputs.next_version }} + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + fetch-depth: 100 - - name: Setup WooCommerce Monorepo - uses: ./.github/actions/setup-woocommerce-monorepo - with: - build: false + - name: Setup WooCommerce Monorepo + uses: ./.github/actions/setup-woocommerce-monorepo + with: + build: false - - name: "Run the script to enforce the code freeze" - id: freeze - run: php .github/workflows/scripts/release-code-freeze.php - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GITHUB_OUTPUTS: 1 + - name: 'Run the script to enforce the code freeze' + id: freeze + run: php .github/workflows/scripts/release-code-freeze.php + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_OUTPUTS: 1 - prep-trunk: - name: Preps trunk for next development cycle - runs-on: ubuntu-20.04 - needs: maybe-create-next-milestone-and-release-branch - steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - fetch-depth: 100 + prep-trunk: + name: Preps trunk for next development cycle + runs-on: ubuntu-20.04 + needs: maybe-create-next-milestone-and-release-branch + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + fetch-depth: 100 - - name: fetch-trunk - run: git fetch origin trunk + - name: fetch-trunk + run: git fetch origin trunk - - name: checkout-trunk - run: git checkout trunk + - name: checkout-trunk + run: git checkout trunk - - name: Setup WooCommerce Monorepo - uses: ./.github/actions/setup-woocommerce-monorepo + - name: Setup WooCommerce Monorepo + uses: ./.github/actions/setup-woocommerce-monorepo - - name: Create branch - run: git checkout -b prep/trunk-for-next-dev-cycle-${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }} + - name: Create branch + run: git checkout -b prep/trunk-for-next-dev-cycle-${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }} - - name: Bump versions - working-directory: ./tools/version-bump - run: pnpm run version bump woocommerce -v ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }}.0-dev + - name: Bump versions + working-directory: ./tools/version-bump + run: pnpm run version bump woocommerce -v ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }}.0-dev - - name: Checkout pnpm-lock.yaml to prevent issues - run: git checkout pnpm-lock.yaml + - name: Checkout pnpm-lock.yaml to prevent issues + run: git checkout pnpm-lock.yaml - - name: Commit changes - run: git commit -am "Prep trunk for ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }} cycle" + - name: Commit changes + run: git commit -am "Prep trunk for ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }} cycle" - - name: Push branch up - run: git push --no-verify origin prep/trunk-for-next-dev-cycle-${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }} + - name: Push branch up + run: git push --no-verify origin prep/trunk-for-next-dev-cycle-${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }} - - name: Create the PR - uses: actions/github-script@v6 - with: - script: | - const body = "This PR updates the versions in trunk to ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }} for next development cycle." + - name: Create the PR + uses: actions/github-script@v6 + with: + script: | + const body = "This PR updates the versions in trunk to ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }} for next development cycle." - const pr = await github.rest.pulls.create({ - owner: context.repo.owner, - repo: context.repo.repo, - title: "Prep trunk for ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }} cycle", - head: "prep/trunk-for-next-dev-cycle-${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }}", - base: "trunk", - body: body - }) + const pr = await github.rest.pulls.create({ + owner: context.repo.owner, + repo: context.repo.repo, + title: "Prep trunk for ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }} cycle", + head: "prep/trunk-for-next-dev-cycle-${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }}", + base: "trunk", + body: body + }) - notify-slack: - name: "Sends code freeze notification to Slack" - if: ${{ inputs.skipSlackPing != true }} - runs-on: ubuntu-20.04 - needs: maybe-create-next-milestone-and-release-branch - steps: - - name: Slack - uses: archive/github-actions-slack@v2.0.0 - id: notify - with: - slack-bot-user-oauth-access-token: ${{ secrets.CODE_FREEZE_BOT_TOKEN }} - slack-channel: ${{ inputs.slackChannelOverride || secrets.WOO_RELEASE_SLACK_CHANNEL }} - slack-text: | - :warning-8c: ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.release_version }} Code Freeze :ice_cube: - - The automation to cut the release branch for ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.release_version }} has run. Any PRs that were not already merged will be a part of ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }} by default. If you have something that needs to make ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.release_version }} that hasn't yet been merged, please see the <${{ secrets.FG_LINK }}/code-freeze-for-woocommerce-core-release/|fieldguide page for the code freeze>. + notify-slack: + name: 'Sends code freeze notification to Slack' + if: ${{ inputs.skipSlackPing != true }} + runs-on: ubuntu-20.04 + needs: maybe-create-next-milestone-and-release-branch + steps: + - name: Slack + uses: archive/github-actions-slack@v2.0.0 + id: notify + with: + slack-bot-user-oauth-access-token: ${{ secrets.CODE_FREEZE_BOT_TOKEN }} + slack-channel: ${{ inputs.slackChannelOverride || secrets.WOO_RELEASE_SLACK_CHANNEL }} + slack-text: | + :warning-8c: ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.release_version }} Code Freeze :ice_cube: - trigger-changelog-action: - name: "Trigger changelog action" - runs-on: ubuntu-20.04 - needs: maybe-create-next-milestone-and-release-branch - steps: - - run: | - curl \ - -X POST \ - -H "Accept: application/vnd.github.v3+json" \ - -H "Authorization: token ${{ secrets.WC_BOT_TRIAGE_TOKEN }}" \ - -d '{"ref":"refs/heads/trunk","inputs":{"releaseBranch":"${{ needs.maybe-create-next-milestone-and-release-branch.outputs.branch }}","releaseVersion":"${{ needs.maybe-create-next-milestone-and-release-branch.outputs.release_version }}"}}' \ - https://api.github.com/repos/${{ github.repository }}/actions/workflows/release-changelog.yml/dispatches + The automation to cut the release branch for ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.release_version }} has run. Any PRs that were not already merged will be a part of ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }} by default. If you have something that needs to make ${{ needs.maybe-create-next-milestone-and-release-branch.outputs.release_version }} that hasn't yet been merged, please see the <${{ secrets.FG_LINK }}/code-freeze-for-woocommerce-core-release/|fieldguide page for the code freeze>. + + trigger-changelog-action: + name: 'Trigger changelog action' + runs-on: ubuntu-20.04 + needs: maybe-create-next-milestone-and-release-branch + steps: + - name: 'Trigger changelog action' + uses: actions/github-script@v6 + with: + script: | + github.rest.actions.createWorkflowDispatch({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: 'release-changelog.yml', + ref: 'trunk', + inputs: { + releaseVersion: "release/${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }}", + releaseBranch: "${{ needs.maybe-create-next-milestone-and-release-branch.outputs.next_version }}" + } + })