ci(release): open the appcast PR as a GitHub App and auto-merge it - #64
Open
alecf wants to merge 1 commit into
Open
ci(release): open the appcast PR as a GitHub App and auto-merge it#64alecf wants to merge 1 commit into
alecf wants to merge 1 commit into
Conversation
The release PR was opened with the default GITHUB_TOKEN, and GitHub starts no workflow run for events created with that token. The PR therefore arrived with no CI at all and its required checks sat unfilled until someone pushed an empty commit or closed and reopened it — 41 minutes of dead time on the last release. Mint an installation token from a dedicated GitHub App instead. That is a distinct identity, so ci.yml, pr-title.yml and pr-screenshot.yml all fire when the PR opens, which in turn gives auto-merge real checks to wait on. The release now needs one dispatch and no further clicks. The auto-merge request retries across the window where a freshly created PR still reads as mergeable, and degrades to a warning rather than a failed release if the repository has auto-merge switched off. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J2AcWaTJVfuVboe2tXgih9
Contributor
Test CoverageCoverage after merging claude/release-workflow-automation-xml0wb into main will be
Coverage Report for Changed Files
|
This was referenced Aug 8, 2026
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cuts the release down to a single
gh workflow run release.ymlwith no manual clicks after it.The problem
release.ymlopened therelease/vX.Y.ZPR with the defaultGITHUB_TOKEN. GitHub starts no workflow run for events created with that token — it's platform-level recursion protection, not a permissions setting — so the PR arrived with no CI at all and its required checks stayed unfilled until someone pushed an empty commit or closed and reopened it.On #63 that was 41 minutes of dead time: PR opened 22:33, checks finally started 23:14.
The fix
Mint a short-lived installation token from a dedicated GitHub App and use it to push the branch and open the PR. An app is a distinct identity, so
ci.yml,pr-title.ymlandpr-screenshot.ymlall fire the moment the PR opens — which is what makes auto-merge viable, since auto-merge needs real pending checks to wait on.Phase 2 is unchanged: the merge still triggers
release-publish.ymlto flip the draft Release to published, anddeploy-site.ymlto push the appcast to Pages. Both fire correctly because an app-driven merge is not aGITHUB_TOKENevent either.The next release dispatch fails at step one without these. Setup is written up in
docs/sparkle-setup.md§ 4.Contents: Read and writeandPull requests: Read and write, installable only on this account. Install it ontotalrecall.mainalready requires status checks, which auto-merge needs — it can only be requested on a PR that isn't already mergeable. Ifmainalso requires an approving review, the release PR waits for yours; since the app authors it, you're free to approve it yourself.Notes for review
gh pr view "$BRANCH", which also resolves a closed PR. Aborting a release and re-running would have skipped PR creation and left the re-dispatch with nothing mergeable. Now scoped to open PRs.permissions:narrowed tocontents: write;pull-requests: writeis no longer needed onGITHUB_TOKENnow that the app handles the PR.actions/create-github-app-tokenis SHA-pinned with a version comment, matching the other actions in this repo.Docs
CLAUDE.md,docs/sparkle-setup.mdandREADME.mdupdated. The sparkle-setup rewrite covers the app creation steps and both repo settings;CLAUDE.mdcarries a warning against "simplifying" the app token back toGITHUB_TOKEN, which would silently take the checks and auto-merge with it.🤖 Generated with Claude Code
https://claude.ai/code/session_01J2AcWaTJVfuVboe2tXgih9
Screenshot
Auto-captured on
macos-26at17e545c(workflow run). Updated on every push to this PR.