fix(release): stop dependabot from breaking tag releases (dist allow-dirty) - #13
Merged
Conversation
…ng releases Second occurrence of the same failure. PR #11 bumped `actions/checkout` 6 -> 7 across every workflow, which again rewrote the six pins inside `.github/workflows/release.yml` — a cargo-dist GENERATED file that the `plan` job verifies byte-for-byte. `dist plan` has been failing on main since it merged, and because `plan` is the first job of the real release workflow, the next `vX.Y.Z` tag push would have failed before building an artefact. PR #10 fixed the first occurrence by regenerating the file, and left a comment asking reviewers not to merge such PRs. That did not hold, and it cannot: the PR is generated weekly, dependabot cannot be told to skip a single file, and no published cargo-dist emits a newer checkout pin (0.32.0 is the latest on both crates.io and upstream GitHub), so there is no version to upgrade into. The mismatch is structural, so the guard has to go rather than the pin. With `allow-dirty = ["ci"]`, dist stops verifying release.yml and the file keeps dependabot's `@v7`. That ends the recurrence outright rather than deferring it: every workflow now agrees on v7, so no bump is proposed, and the next action major won't fail `plan` either. The tradeoff is real and is documented next to the key and in CLAUDE.md: dist config changes (targets, installers, publish-jobs, cargo-dist-version) no longer propagate to the workflow on their own, and nothing warns. Editing any of them now requires re-running `dist generate` in the same change. Verified: `dist plan` exits 0 and still emits the full artefact set for all five target triples, with release.yml left on `checkout@v7`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Merged
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.
Revalidation of the two newly-merged PRs (#11 github-actions, #12
zip7 -> 8),plus a permanent fix for the release breakage that has now happened twice.
The problem, second occurrence
PR #11 bumped
actions/checkout6 -> 7 across every workflow. That againrewrote the six pins inside
.github/workflows/release.yml— a cargo-distgenerated file the
planjob verifies byte-for-byte.dist planhas beenfailing on
mainsince it merged (exit 255), and sinceplanis the firstjob of the real release workflow, the next
vX.Y.Ztag push would have failedbefore building a single artefact.
#11's diff touched only
release.yml— nothing else.Why regenerating again wouldn't hold
PR #10 fixed the first occurrence by regenerating the file and left a comment
asking reviewers not to merge such PRs. That didn't hold, and structurally it
can't:
both crates.io and upstream GitHub — so there is no version to upgrade into
So the guard has to go rather than the pin.
allow-dirty = ["ci"]stops distverifying release.yml and keeps dependabot's
@v7. This ends the recurrenceoutright instead of deferring it: every workflow now agrees on v7, so no bump
gets proposed, and the next action major won't fail
planeither.The tradeoff, documented next to the key and in CLAUDE.md: dist-config
changes (
targets,installers,publish-jobs,cargo-dist-version) no longerpropagate to the workflow on their own, and nothing warns. Editing any of them
now requires re-running
dist generatein the same change.Verified:
dist planexits 0 and still emits the full artefact set for all fivetarget triples, with release.yml left on
checkout@v7.Revalidation of #11 and #12
Full local CI replication, matching the workflows exactly (global
RUSTFLAGS: "-D warnings",cargo test --all-targets):planTwo checks specific to
ziptaking another major (7.2.0 -> 8.6.0):and compared against the archive produced by
e7de272(pre-dependabot, zip2.4.2): byte-identical. Same entry names, method 0 stored for the artefact,
method 93 (Z_STANDARD) for
mapping.txt, same fixed 1980-01-01 mtime,extract-version and flag bits. Two consecutive zip majors, zero wire drift.
tree's (
gimli,globset,plist,timealready require it).cargo +1.88 check --all-targetspasses, and therust-version = "1.88"corrected in fix: unbreak tag releases after the dependabot batch, correct MSRV, drop unused indicatif #10 remains accurate.
Both dependency PRs are otherwise sound — no code changes were needed for either.
Not included
docs/unity-il2cpp-linenumber-mappings.mdhas unrelated in-progress edits in theworking tree; deliberately left out of this branch.
🤖 Generated with Claude Code