Refactor publish_release workflow for PR creation

Updated the workflow to create a pull request using GitHub CLI and modified the handling of the VERSION file.
This commit is contained in:
Michel Roegl-Brunner
2025-10-07 11:04:37 +02:00
committed by GitHub
parent eb8801bfc8
commit 6bcf139493

View File

@@ -1,7 +1,7 @@
name: Publish draft release name: Publish draft release
on: on:
workflow_dispatch: workflow_dispatch: # Manual trigger; can be automated later
permissions: permissions:
contents: write contents: write
@@ -14,7 +14,7 @@ jobs:
- name: Checkout repo - name: Checkout repo
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Get latest draft release - name: Get latest draft release
id: draft id: draft
run: | run: |
@@ -31,46 +31,55 @@ jobs:
fi fi
echo "Found draft version: ${{ steps.draft.outputs.tag_name }}" echo "Found draft version: ${{ steps.draft.outputs.tag_name }}"
- name: Create branch and commit VERSION - name: Create branch and commit VERSION
run: | run: |
branch="update-version-${{ steps.draft.outputs.tag_name }}" branch="update-version-${{ steps.draft.outputs.tag_name }}"
git push origin --delete "$branch" || echo "No remote branch to delete" # Delete remote branch if exists
git fetch origin main git push origin --delete "$branch" || echo "No remote branch to delete"
git checkout -b "$branch" origin/main git fetch origin main
version="${{ steps.draft.outputs.tag_name }}" git checkout -b "$branch" origin/main
echo "$version" | sed 's/^v//' > VERSION # Write VERSION file and timestamp to ensure a diff
echo "# generated at $(date +%s)" >> VERSION version="${{ steps.draft.outputs.tag_name }}"
git add VERSION echo "$version" | sed 's/^v//' > VERSION
git config user.name "github-actions[bot]" echo "# generated at $(date +%s)" >> VERSION
git config user.email "github-actions[bot]@users.noreply.github.com" git add VERSION
git commit -m "chore: add VERSION $version" || echo "No changes" git config user.name "github-actions[bot]"
git push --set-upstream origin "$branch" git config user.email "github-actions[bot]@users.noreply.github.com"
git commit -m "chore: add VERSION $version" --allow-empty
# - name: Create pull request git push --set-upstream origin "$branch"
# id: pr
# uses: peter-evans/create-pull-request@v6
# with:
# token: ${{ secrets.GITHUB_TOKEN }}
# branch: "update-version-${{ steps.draft.outputs.tag_name }}"
# base: main
# title: "chore: add VERSION ${{ steps.draft.outputs.tag_name }}"
# body: "This PR adds or updates the VERSION file for ${{ steps.draft.outputs.tag_name }}"
# labels: automated
- name: Create PR with GitHub CLI
id: pr
run: |
pr_number=$(gh pr create \
--base main \
--head update-version-${{ steps.draft.outputs.tag_name }} \
--title "chore: add VERSION ${{ steps.draft.outputs.tag_name }}" \
--body "Adds VERSION file for release ${{ steps.draft.outputs.tag_name }}" \
--label automated \
--json number \
--jq '.number')
echo $pr_number
echo "pr_number=$pr_number" >> $GITHUB_OUTPUT
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Auto-merge PR - name: Auto-merge PR
uses: peter-evans/enable-pull-request-automerge@v2 uses: peter-evans/enable-pull-request-automerge@v2
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
pull-request-number: ${{ steps.pr.outputs.pull-request-number }} pull-request-number: ${{ steps.pr.outputs.pr_number }}
merge-method: squash merge-method: squash
- name: Wait for PR merge - name: Wait for PR merge
uses: actions/github-script@v7 uses: actions/github-script@v7
with: with:
script: | script: |
const prNum = parseInt("${{ steps.pr.outputs.pull-request-number }}") const prNum = parseInt("${{ steps.pr.outputs.pr_number }}")
let merged = false let merged = false
const maxRetries = 20 const maxRetries = 20
let tries = 0 let tries = 0