Release v2.5.7 #14
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Finalize Release | |
| # Runs automatically when a release PR is merged into main. | |
| # Creates the git tag, GitHub Release, and a back-merge PR to develop. | |
| on: | |
| pull_request: | |
| types: [closed] | |
| branches: [main] | |
| jobs: | |
| finalize-release: | |
| name: Tag, Release, and Back-merge | |
| if: github.event.pull_request.merged == true && startsWith(github.event.pull_request.head.ref, 'release/') | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - name: Checkout release merge commit | |
| uses: actions/checkout@v5 | |
| with: | |
| ref: ${{ github.event.pull_request.merge_commit_sha }} | |
| fetch-depth: 0 | |
| token: ${{ secrets.RELEASE_PAT }} | |
| - name: Configure Git | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "github-actions[bot]@users.noreply.github.com" | |
| - name: Extract release info from branch name | |
| id: release | |
| env: | |
| RELEASE_BRANCH: ${{ github.event.pull_request.head.ref }} | |
| shell: bash | |
| run: | | |
| BRANCH="$RELEASE_BRANCH" | |
| TAG="${BRANCH#release/}" | |
| SEMVER="${TAG#v}" | |
| if echo "$SEMVER" | grep -q '-'; then | |
| PRERELEASE="true" | |
| else | |
| PRERELEASE="false" | |
| fi | |
| echo "tag=${TAG}" >> "$GITHUB_OUTPUT" | |
| echo "semver=${SEMVER}" >> "$GITHUB_OUTPUT" | |
| echo "prerelease=${PRERELEASE}" >> "$GITHUB_OUTPUT" | |
| - name: Check if tag already exists | |
| shell: bash | |
| run: | | |
| if git rev-parse "${{ steps.release.outputs.tag }}" >/dev/null 2>&1; then | |
| echo "::error::Tag ${{ steps.release.outputs.tag }} already exists." | |
| exit 1 | |
| fi | |
| - name: Create annotated tag | |
| shell: bash | |
| run: | | |
| TAG="${{ steps.release.outputs.tag }}" | |
| git tag -a "$TAG" -m "Release $TAG" | |
| git push origin "$TAG" | |
| echo "Created and pushed tag: $TAG" | |
| - name: Create GitHub Release | |
| env: | |
| GH_TOKEN: ${{ secrets.RELEASE_PAT }} | |
| TAG: ${{ steps.release.outputs.tag }} | |
| PRERELEASE: ${{ steps.release.outputs.prerelease }} | |
| shell: bash | |
| run: | | |
| PRERELEASE_FLAG="" | |
| if [ "$PRERELEASE" = "true" ]; then | |
| PRERELEASE_FLAG="--prerelease" | |
| fi | |
| gh release create "$TAG" \ | |
| --title "$TAG" \ | |
| --generate-notes \ | |
| $PRERELEASE_FLAG | |
| - name: Delete release branch | |
| env: | |
| RELEASE_BRANCH: ${{ github.event.pull_request.head.ref }} | |
| shell: bash | |
| run: | | |
| BRANCH="$RELEASE_BRANCH" | |
| git push origin --delete "$BRANCH" || true | |
| echo "Deleted branch: $BRANCH" | |
| - name: Create back-merge PR | |
| env: | |
| GH_TOKEN: ${{ secrets.RELEASE_PAT }} | |
| TAG: ${{ steps.release.outputs.tag }} | |
| shell: bash | |
| run: | | |
| BACKMERGE_BRANCH="backmerge/${TAG}" | |
| git checkout -b "$BACKMERGE_BRANCH" "${{ github.event.pull_request.merge_commit_sha }}" | |
| git push origin "$BACKMERGE_BRANCH" | |
| gh pr create \ | |
| --base develop \ | |
| --head "$BACKMERGE_BRANCH" \ | |
| --title "Back-merge ${TAG} from main into develop" \ | |
| --body "Automatic back-merge after release ${TAG}. Merge this to keep \`develop\` in sync with \`main\`." | |
| - name: Summary | |
| run: | | |
| echo "## Release Finalized" >> "$GITHUB_STEP_SUMMARY" | |
| echo "" >> "$GITHUB_STEP_SUMMARY" | |
| echo "- **Tag:** ${{ steps.release.outputs.tag }}" >> "$GITHUB_STEP_SUMMARY" | |
| echo "- **Version:** ${{ steps.release.outputs.semver }}" >> "$GITHUB_STEP_SUMMARY" | |
| echo "- **Pre-release:** ${{ steps.release.outputs.prerelease }}" >> "$GITHUB_STEP_SUMMARY" | |
| echo "" >> "$GITHUB_STEP_SUMMARY" | |
| echo "### What happened" >> "$GITHUB_STEP_SUMMARY" | |
| echo "1. Tag \`${{ steps.release.outputs.tag }}\` created" >> "$GITHUB_STEP_SUMMARY" | |
| echo "2. GitHub Release created with auto-generated notes" >> "$GITHUB_STEP_SUMMARY" | |
| echo "3. Release workflow triggered for NuGet publish" >> "$GITHUB_STEP_SUMMARY" | |
| echo "4. Back-merge PR opened to develop" >> "$GITHUB_STEP_SUMMARY" |