ci(release): carry the finalize fixes onto the 1.6 line - #3530
Conversation
release-1.6 was cut at v1.6.0 on 2026-07-22, and the finalize fixes landed on main afterwards, so shipping v1.6.1 from this line would repeat two defects v1.6.0 hit. Workflows run from the ref they fire on: a promote PR based on release-1.6 runs THIS file, not main's. Carries three upstream commits, after which this file is byte-identical to main, so future backports touching it will not conflict: 01e1e71 persist-credentials: false on the checkout f49d54a publish the release with the merged changelog as its body ba67fea drop paths-ignore from the trigger Without the first, the checkout persists GITHUB_TOKEN as an http.extraheader that silently wins over the app token injected by git remote set-url. The stable tag then pushes as GITHUB_TOKEN, which creates no workflow run, so tags.yaml never fires and its generate-changelog and update-website-docs backstops stay silent. That is exactly what happened to v1.6.0. Without the second, the release publishes with the draft's body ("Promoted from vX.Y.Z-rc.N"). The two compound on a maintenance line: a patch's changelog is committed to release-1.6 and never reaches main, and update-releasenotes.yaml only watches main, so nothing would ever sync it. v1.6.1 would ship with placeholder release notes permanently. The third is latent rather than active — a promote PR carrying only docs/changelogs/vX.Y.Z.md would be dropped by the filter, producing no finalize run, no tag and no error. v1.6.1 will carry tag-string rewrites so it would not have fired, but the filter has no remaining purpose now that the promote PR always carries a changelog. actionlint and zizmor clean; no bats suite references this workflow, and hack/promote-gate-contract.bats does not exist on this line. Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Why
release-1.6was created at v1.6.0's merge commit on 2026-07-22, and the finalize fixes landed onmainafter that. Workflow files run from the ref they fire on, so a promote PR based onrelease-1.6runs this copy ofpull-requests-release.yaml, notmain's. Shipping v1.6.1 from this line today would repeat two defects v1.6.0 already hit.What this carries
Three upstream commits, after which this file is byte-identical to
main's copy — so later backports touching it will not conflict.01e1e7188persist-credentials: falseon the checkoutf49d54a68ba67fea7dpaths-ignorefrom the triggerpersist-credentials
Without it the checkout persists
GITHUB_TOKENas anhttp.extraheader, which silently wins over the app token injected bygit remote set-url. The stable tag then pushes asGITHUB_TOKEN, which creates no workflow run, sotags.yamlnever fires and itsgenerate-changelogandupdate-website-docsbackstops stay silent. That is exactly what happened to v1.6.0.Changelog as release body
Without it the release publishes with the draft's own body,
"Promoted from vX.Y.Z-rc.N".These two compound into a permanent defect on a maintenance line. A patch's changelog is committed to
release-1.6.1, merged intorelease-1.6, and never reachesmain— andupdate-releasenotes.yamlonly watchesmain, so nothing would ever sync it. The tag-time backstop that would have ported it is dead because of the credential bug. v1.6.1 would ship with placeholder release notes permanently, with no error anywhere.paths-ignore
Latent rather than active. A promote PR carrying only
docs/changelogs/vX.Y.Z.mdwould be dropped by the filter, producing no finalize run, no tag and no error. v1.6.1 will carry tag-string rewrites so it would not have fired, but the filter has no remaining purpose now that the promote PR always carries a changelog.On the cherry-pick policy
docs/release.md's skip rule says CI-only changes do not belong in a patch. That rule governs release contents; backporting release machinery so the line is releasable at all is a different thing, and there is precedent already on this branch — #3473, #3474 and #3514 are all CI/release backports.Verification
actionlintclean.zizmorclean, no findings. YAML parses. No bats suite references this workflow, andhack/promote-gate-contract.batsdoes not exist on this line, so there is no stale contract test to trip. The diff againstorigin/main's copy of the file is empty.Not included
Three known gaps on this line are deliberately out of scope, none of which needs a code change to ship v1.6.1:
e2e-tag.yamlis absent andtags.yamlhas norc-e2ejob, so no E2E runs on the rc. Handled by dispatching E2E Release Tag frommainagainst the published rc tag, which also supplies the promote gate's alternate evidence.pull-requests.yamlhas nolabeledtrigger, so addingfull-e2eto the promote PR starts nothing. Backporting that needs the label-event guards too, and rc-time validation makes it unnecessary here.