ci: exercise the release path on every pull request - #14
Open
P4suta wants to merge 1 commit into
Open
Conversation
Every defect found in the release path so far was invisible to CI, because CI tests the crate and nothing runs the release. The list, all from real failed releases: an action missing from the repository allowlist, and then two more that release-plz itself calls; a release-plz configuration that disagreed with a manifest; a runner that cannot build the crate `cargo publish` verifies; a `release_always` setting that made the crate permanently unreleasable. Each one was found by attempting a release and reading the failure. Run the real release action with `dry_run`. It downloads the same actions, including the ones release-plz calls internally, parses the same configuration, resolves the same versions, and performs the same `cargo publish` verification build. It uploads nothing. That covers the whole class: an unlisted action fails when it is downloaded, a configuration conflict fails when it is parsed, and a runner that cannot build the crate fails in the verification build -- all on the pull request instead of during a release. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Every defect found in the release path so far was invisible to CI, because CI tests the crate and nothing runs the release. All of these came from real failed releases, discovered by attempting one and reading the failure:
release-plz/actionmissing from the repository allowlistcargo-bins/cargo-binstallandrelease-plz/git-configalso missing — release-plz calls themxtaskhadpublish = falsewhile the config said otherwiseubuntu-latestrunner cannot build a Windows-only cratecargo publishverificationcargo metadatarelease_always = falsemade the crate permanently unreleasableSix separate round trips, each one costing a release attempt.
The fix
Run the real release action with
dry_runon every pull request. It:release-plz.tomlagainst the same manifests;cargo publishverification build, on the same runner;That covers the whole class. An unlisted action fails when it is downloaded. A configuration conflict fails when it is parsed. A runner that cannot build the crate fails in the verification build. All on the pull request, not during a release.
Wired into
ci-required, so it gates merges like every other job.🤖 Generated with Claude Code