From 112ff6465ac36f74d9a3fb07fa4a5f5e5766a007 Mon Sep 17 00:00:00 2001 From: sebas_correa Date: Wed, 29 Jul 2026 11:23:08 -0300 Subject: [PATCH] ci: auto-merge release-please PRs Triggers off the completion of the whole 'Release Please' workflow run (instead of pull_request events directly) so it always waits for the generate-readmes job's README commit to land on the release PR branch before merging. Delegates the actual merge to the reusable auto-merge-release.yml workflow in actions-nullplatform, using a GitHub App token so the downstream tag/GitHub Release still gets created (a merge with the default GITHUB_TOKEN wouldn't trigger it). Depends on nullplatform/actions-nullplatform#85 (pr_number input). --- .github/workflows/auto-merge-release.yml | 45 ++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .github/workflows/auto-merge-release.yml diff --git a/.github/workflows/auto-merge-release.yml b/.github/workflows/auto-merge-release.yml new file mode 100644 index 000000000..e20e9bea0 --- /dev/null +++ b/.github/workflows/auto-merge-release.yml @@ -0,0 +1,45 @@ +name: auto-merge-release-pr + +on: + workflow_run: + workflows: ["Release Please"] + types: [completed] + +permissions: + pull-requests: read + +jobs: + find-release-pr: + name: Find release PR + if: github.event.workflow_run.conclusion == 'success' + runs-on: ubuntu-24.04 + outputs: + pr_number: ${{ steps.find.outputs.pr_number }} + steps: + # The "Release Please" workflow's generate-readmes job pushes an extra + # commit (regenerated READMEs) to the release PR branch after the PR is + # opened. Waiting for the whole workflow run to finish (workflow_run) + # instead of reacting directly to pull_request events avoids merging + # before that commit lands. + - name: Find open release-please PR + id: find + env: + GH_TOKEN: ${{ github.token }} + run: | + pr_number="$(gh pr list --repo "$GITHUB_REPOSITORY" \ + --head release-please--branches--main \ + --state open \ + --json number,author,labels \ + --jq '[.[] | select(.author.login == "github-actions[bot]" and ([.labels[].name] | contains(["autorelease: pending"])))][0].number // 0')" + echo "pr_number=$pr_number" >> "$GITHUB_OUTPUT" + + automerge: + name: Auto-merge release PR + needs: find-release-pr + if: needs.find-release-pr.outputs.pr_number != '0' + uses: nullplatform/actions-nullplatform/.github/workflows/auto-merge-release.yml@main + with: + pr_number: ${{ fromJson(needs.find-release-pr.outputs.pr_number) }} + secrets: + app-id: ${{ secrets.APP_RELEASE_ID }} + app-private-key: ${{ secrets.APP_RELEASE_PRIVATE_KEY }}