diff --git a/.github/workflows/finalize-release.yml b/.github/workflows/finalize-release.yml index e5b8d15b64..ca91b249f5 100644 --- a/.github/workflows/finalize-release.yml +++ b/.github/workflows/finalize-release.yml @@ -9,8 +9,12 @@ on: inputs: ref: description: | - The release branch to finalize. + The ref of release to finalize (e.g., 'rc/MAJOR.MINOR.PATCH'). required: true + tool-ref: + description: | + The ref to the tooling to use for the finalize (e.g., 'rc/MAJOR.MINOR.PATCH'). + required: false jobs: finalize-release: @@ -20,14 +24,17 @@ jobs: - name: Determine ref env: REF_FROM_INPUT: ${{ inputs.ref }} + TOOL_REF_FROM_INPUT: ${{ inputs.tool-ref }} REF_FROM_PR: ${{ github.event.pull_request.merge_commit_sha }} BASE_REF_FROM_PR: ${{ github.event.pull_request.base.ref }} run: | if [[ $GITHUB_EVENT_NAME == "workflow_dispatch" ]]; then echo "REF=$REF_FROM_INPUT" >> "$GITHUB_ENV" + echo "TOOL_REF=$TOOL_REF_FROM_INPUT" >> "$GITHUB_ENV" echo "BASE_REF=$REF_FROM_INPUT" >> "$GITHUB_ENV" else echo "REF=$REF_FROM_PR" >> "$GITHUB_ENV" + echo "TOOL_REF=$REF_FROM_PR" >> "$GITHUB_ENV" echo "BASE_REF=$BASE_REF_FROM_PR" >> "$GITHUB_ENV" fi @@ -36,6 +43,13 @@ jobs: with: ref: ${{ env.REF }} fetch-depth: 0 + path: release + + - name: Checkout + uses: actions/checkout@v4 + with: + ref: ${{ env.TOOL_REF }} + path: tooling - name: Install Python uses: actions/setup-python@v4 @@ -44,11 +58,13 @@ jobs: - name: Install dependencies run: pip install -r scripts/release/requirements.txt + working-directory: tooling - name: Configure git run: | git config user.name "$GITHUB_ACTOR" git config user.email "$GITHUB_ACTOR@users.noreply.github.com" + working-directory: release - name: Update release tag run: | @@ -57,6 +73,7 @@ jobs: git tag -f -a v$version -m "Release v$version" git push --force origin v$version + working-directory: release - name: Finalize release env: @@ -66,30 +83,40 @@ jobs: echo "Finalizing release v$version" gh release edit "v$version" --draft=false --tag=v$version + working-directory: release - name: Determine if release was a hotfix release run: | version=${BASE_REF#rc/} - echo "HOTFIX_RELEASE=$(python scripts/release/is-hotfix-release.py $version)" >> "$GITHUB_ENV" + # We are running the script in the tooling directory with the release directory as the working directory + echo "HOTFIX_RELEASE=$(python ../tooling/scripts/release/is-hotfix-release.py $version)" >> "$GITHUB_ENV" + working-directory: release + + - name: Determine next release version + if: env.HOTFIX_RELEASE == 'false' + run: | + version=${BASE_REF#rc/} + next_version=$(python scripts/release/next-version.py --component minor --pre-release dev -- $version) + echo "NEXT_VERSION=$next_version" >> "$GITHUB_ENV" + working-directory: tooling - name: Bump main version - if: env.HOTFIX_RELEASE == 'false' env: GH_TOKEN: ${{ github.token }} run: | - version=${BASE_REF#rc/} - next_version=$(python scripts/release/next-version.py --component minor --pre-release dev -- $version) - echo "Bumping main version to $next_version" + echo "Bumping main version to $NEXT_VERSION" git switch main git pull --ff-only origin main git switch -c release-automation/bump-version - ./scripts/release/bump-version.sh "$next_version" + # We are running the script in the tooling directory with the release directory as the working directory + ../tooling/scripts/release/bump-version.sh "$NEXT_VERSION" git add -u . - git commit -m "Bump version to $next_version" + git commit -m "Bump version to $NEXT_VERSION" git push --set-upstream origin release-automation/bump-version - gh pr create --repo $GITHUB_REPOSITORY --base main --head release-automation/bump-version --body "Bump the version of main to the dev label of the just released version $next_version" --title "Bump version to $next_version" + gh pr create --repo $GITHUB_REPOSITORY --base main --head release-automation/bump-version --body "Bump the version of main to $NEXT_VERSION" --title "Bump version to $NEXT_VERSION" + working-directory: release