Skip to content

CI/release: verify isolated publish on manifest changes, and publish workspace in one step - #28

Merged
SeriousBug merged 2 commits into
masterfrom
ci-publish-dry-run
Jul 1, 2026
Merged

CI/release: verify isolated publish on manifest changes, and publish workspace in one step#28
SeriousBug merged 2 commits into
masterfrom
ci-publish-dry-run

Conversation

@SeriousBug

@SeriousBug SeriousBug commented Jul 1, 2026

Copy link
Copy Markdown
Owner

Two publishing-robustness changes prompted by the 11.4.0 partial release (utils uploaded, then impl failed verification).

release.yml — publish the whole workspace at once

Replaces the publish-one-by-one + sleep 20s steps with a single cargo publish --workspace. It publishes members in dependency order, verifies every crate before uploading any, and waits for the index internally. If one crate fails verification, nothing uploads — so a broken crate can't leave a partial release behind, which is exactly what broke 11.4.0.

test.yml — catch isolation breaks on PRs

Adds a publish-dry-run job running cargo publish --workspace --dry-run --all-features, which compiles each packaged crate on its own and catches missing per-crate features that workspace feature unification hides (the missing syn printing feature that broke the release). Gated on Cargo.toml changes via dorny/paths-filter, so it only runs when a manifest changed.

This PR touches no Cargo.toml, so the new dry-run step is skipped here — expected; it exercises on the next release/dependency PR. Verified cargo publish --workspace --dry-run --all-features passes locally on master.

The workspace test build passes even when a crate is missing a per-crate
feature, because Cargo unifies features across the workspace. cargo
publish verifies each crate compiled on its own, so it catches those
gaps — this is how the 11.4.0 release broke (impl needed syn's
"printing" feature). Add a job running cargo publish --workspace
--dry-run, gated on Cargo.toml changes via dorny/paths-filter so it only
runs when a manifest actually changed.
cargo publish --workspace publishes all members in dependency order,
verifying every crate before uploading any, and waits for the index
internally. This removes the manual publish-per-crate + sleep 20s hack
and prevents partial releases: if one crate fails verification, none are
uploaded (the 11.4.0 failure uploaded utils then broke on impl).
@SeriousBug SeriousBug changed the title CI: verify crates publish in isolation on manifest changes CI/release: verify isolated publish on manifest changes, and publish workspace in one step Jul 1, 2026
@codecov

codecov Bot commented Jul 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 75.97%. Comparing base (616db7d) to head (a89f8b4).

Additional details and impacted files
@@           Coverage Diff           @@
##           master      #28   +/-   ##
=======================================
  Coverage   75.97%   75.97%           
=======================================
  Files           9        9           
  Lines         566      566           
=======================================
  Hits          430      430           
  Misses        136      136           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@SeriousBug
SeriousBug merged commit 1768b59 into master Jul 1, 2026
7 checks passed
@SeriousBug
SeriousBug deleted the ci-publish-dry-run branch July 1, 2026 00:56
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