fix(ci): land lockstep wrapper bumps via PR-merge instead of direct push#94
Merged
Conversation
The Auto-release workflow's "Lockstep-bump wrappers" step has been direct-pushing to main as github-actions[bot]. Branch protection rejected the push on the 0.8.6 release: remote: error: GH006: Protected branch update failed for refs/heads/main. remote: - Changes must be made through a pull request. The natural fix (add `github-actions` to `bypass_pull_request_allowances`) doesn't work: the built-in runtime identity isn't a real installable GitHub App, so the API silently drops it and the UI picker doesn't surface it. Granting bypass would require either a custom GitHub App or a PAT belonging to a human admin, both bigger lifts than the problem warrants. Restructure the step to push to a temp branch + open a PR + immediately squash-merge it. Branch protection accepts merges through PRs, no bypass needed. The auto-opened PRs use `chore(release):` prefix so `scripts/backfill-changelog.js` filters them out, keeping the rendered /changelog clean. Also lockstep-bumps create-webjs + webjsdev to 0.8.6 in source so they match the already-published @webjsdev/cli@0.8.6 (and the npm publishes can be done manually one last time after this lands; future releases self-heal via the new flow).
3 tasks
This was referenced May 25, 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.
Summary
Permanent fix for the
Auto-releaseworkflow's "Lockstep-bump wrappers"step, which was rejected by
mainbranch protection on the 0.8.6release. Also bumps
create-webjs+webjsdevin source so theymatch the already-published
@webjsdev/cli@0.8.6.Why the obvious fix doesn't work
The natural fix would be to add
github-actionstorequired_pull_request_reviews.bypass_pull_request_allowances.apps.That doesn't work:
github-actions[bot]runtime identity isn't a real installableGitHub App; it's a built-in pseudo-actor. The branch-protection API
silently drops it from the apps array (I tried), and the UI picker
for bypass actors doesn't surface it. Confirmed by both API
inspection and a manual UI search.
GitHub App with bypass entitlement, org-level rulesets) all need
more infrastructure than the problem warrants.
What this PR does
.github/workflows/release.ymlthe lockstep step now goes throughthe PR machinery instead of a direct push:
package.jsonfiles (unchanged).auto/lockstep-<version>-<run-id>, commits, pushes the branch.(Branch protection only applies to
main; pushing to a featurebranch is fine.)
gh pr createwith title prefixedchore(release):so it's filtered out bybackfill-changelog.js(the rendered
/changelogstays clean).gh pr merge --squash --delete-branch.Branch protection accepts merges through PRs, which is what
this satisfies. No bypass entitlement needed.
Adds
pull-requests: writeto the workflow'spermissions:blockand sets
GH_TOKENon the lockstep step soghcalls work.packages/create-webjs/package.json+packages/webjsdev/package.jsonbumps
version0.8.5→0.8.6and@webjsdev/clidep^0.8.5→^0.8.6. Mirrors what the bot would have committed if its push hadsucceeded.
After merge
The release workflow won't re-fire (no
changelog/**change in thisPR), so the wrappers need one last manual publish to catch up:
Verify with
npm view create-webjs versionandnpm view webjsdev version(both should print
0.8.6).From the next release onward, the workflow self-heals.
Test plan
npm testvia pre-commit hook (1151/1151 pass).inline comments in the workflow file).
npm create webjs@latest demofrom a clean cache boots cleanly.
squash-merged automatically and wrappers publish.
Companion cleanup
PR #93 will be closed after this lands; its content is superseded
by the wrapper bumps included here.