1- # Triggers when release-please PR is merged to release/candidate.
2- # Creates the final release/v{version} branch and deletes the candidate branch .
1+ # Step 4: Triggers when the changelog PR is merged to release/candidate.
2+ # Records last-release-sha and renames release/candidate to release/ v{version}.
33name : " Release: Finalize"
44
55on :
3333 if : steps.check.outputs.is_release_pr == 'true'
3434 with :
3535 ref : release/candidate
36+ token : ${{ secrets.RELEASE_PAT }}
37+ fetch-depth : 0
3638
3739 - name : Extract version from manifest
3840 if : steps.check.outputs.is_release_pr == 'true'
@@ -42,18 +44,33 @@ jobs:
4244 echo "version=$VERSION" >> $GITHUB_OUTPUT
4345 echo "Extracted version: $VERSION"
4446
45- - name : Create release branch
47+ - name : Configure git identity from RELEASE_PAT
48+ if : steps.check.outputs.is_release_pr == 'true'
49+ env :
50+ GH_TOKEN : ${{ secrets.RELEASE_PAT }}
51+ run : |
52+ USER_JSON=$(gh api user)
53+ git config user.name "$(echo "$USER_JSON" | jq -r '.login')"
54+ git config user.email "$(echo "$USER_JSON" | jq -r '.id')+$(echo "$USER_JSON" | jq -r '.login')@users.noreply.github.com"
55+
56+ - name : Record last-release-sha for release-please
4657 if : steps.check.outputs.is_release_pr == 'true'
4758 run : |
48- git checkout -b "release/v${{ steps.version.outputs.version }}"
49- git push origin "release/v${{ steps.version.outputs.version }}"
50- echo "Created branch: release/v${{ steps.version.outputs.version }}"
59+ git fetch origin main
60+ CUT_SHA=$(git merge-base origin/main HEAD)
61+ echo "Release was cut from main at: $CUT_SHA"
62+ jq --arg sha "$CUT_SHA" '. + {"last-release-sha": $sha}' \
63+ .github/release-please-config.json > tmp.json && mv tmp.json .github/release-please-config.json
64+ git add .github/release-please-config.json
65+ git commit -m "chore: update last-release-sha for next release"
66+ git push origin release/candidate
5167
52- - name : Delete release/candidate branch
68+ - name : Rename release/candidate to release/v{version}
5369 if : steps.check.outputs.is_release_pr == 'true'
5470 run : |
55- git push origin --delete release/candidate
56- echo "Deleted branch: release/candidate"
71+ VERSION="v${{ steps.version.outputs.version }}"
72+ git push origin "release/candidate:refs/heads/release/$VERSION" ":release/candidate"
73+ echo "Renamed release/candidate to release/$VERSION"
5774
5875 - name : Update PR label to tagged
5976 if : steps.check.outputs.is_release_pr == 'true'
0 commit comments