Skip to content

fix(promote): say in the job summary why GitHub refused a tag push - #217

Merged
azlekov merged 1 commit into
mainfrom
fix/promote-push-refusal-summary
Oct 27, 2026
Merged

azlekov merged 1 commit into
mainfrom
fix/promote-push-refusal-summary

Conversation

@azlekov

@azlekov azlekov commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

Refs #215.

Why the Promote run failed

GitHub refused the App's git access across the org. The cause was not in this workflow.

  • The push used the App's token. The refusal names dodi-smart-github-assistant[bot], not github-actions[bot], so -c http.https://github.com/.extraheader= did clear the credential that actions/checkout@v7 persists. Checkout v7 now keeps that header in a file pulled in through includeIf.gitdir. I checked locally with git 2.56: a bogus header in such a file is sent and gets a 401, and with the -c reset no Authorization header goes out and the request gets a 200.
  • The tag's old target is not the cause. The 2026-10-20 promotion moved v1 from 1.30.0 to 1.39.5 and crossed 84 workflow and action files. The failed one would have crossed 69. A missing workflows permission also gives a different message ("refusing to allow a GitHub App to create or update workflow … without workflows permission"). This run got the generic "Permission to … denied".
  • The timing matches the org-wide App outage. Publish release made the App's last successful push at 21:50:21Z on 10-26, when it moved next. Other workflows' App tokens failed git fetch and push from about 21:50Z, and Promote failed at 07:28Z inside that window. The issue comments have the cross-repo evidence and the recovery after the installation's permissions were re-saved.

What changes

push_tag in scripts/channel-tag.sh now captures a failed push's stderr. It still writes that stderr to the log, and it also writes GitHub's refusal lines to stdout. Promote and Publish release already add stdout to the step summary. One hint follows:

  • denied to github-actions[bot]: set the App secrets.
  • denied to anyone else, or the workflows permission is missing: check the installation's contents: write / workflows: write and re-run for a fresh token. If a fresh token is also refused, an org owner re-saves the installation's permissions.
  • anything else: GitHub's lines are quoted and no hint is added.

The tests use a pre-receive hook on the test repository's bare remote to produce the refusals, so they check the real git output. Without the change the four new cases fail. With it, all 95 pass.

Not verified

No live push was made. v1 is correct at 1.44.5 and was not touched. #215 stays open until a real Promote moves the major tag with the App token. The next release will do that.

🤖 Generated with Claude Code

channel-tag.sh now captures a failed push's stderr and puts GitHub's own refusal lines on stdout, which Promote and Publish release
add to the step summary. A denial to github-actions[bot] points at the App secrets; an App denial or a missing workflows permission
points at the installation's permissions and a re-run for a fresh token. Unknown refusals are quoted without a hint.

The 2026-10-27 failure was GitHub refusing the App's git access org-wide, not this workflow. Refs #215.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@azlekov
azlekov force-pushed the fix/promote-push-refusal-summary branch from 6e7c4af to bdf04da Compare October 27, 2026 11:46
@azlekov
azlekov merged commit 9ba0ab3 into main Oct 27, 2026
2 checks passed
@azlekov
azlekov deleted the fix/promote-push-refusal-summary branch October 27, 2026 11:49
github-actions Bot pushed a commit that referenced this pull request Oct 27, 2026
## [1.44.6](v1.44.5...v1.44.6) (2026-10-27)

### 🐛 Bug Fixes

* **promote:** say in the job summary why GitHub refused a tag push ([#217](#217)) ([9ba0ab3](9ba0ab3)), references [#215](#215)
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.44.6 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant