build(release): migrate from release-plz to cargo-release#141
build(release): migrate from release-plz to cargo-release#141JustinKovacich wants to merge 5 commits into
Conversation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## main #141 +/- ##
=======================================
Coverage 81.13% 81.13%
=======================================
Files 45 45
Lines 15182 15182
=======================================
Hits 12318 12318
Misses 2864 2864 |
There was a problem hiding this comment.
Pull request overview
Migrates the repository’s release automation from release-plz to cargo-release, aligning with a tag-based (v*) release flow and introducing a gated crates.io publish job.
Changes:
- Add
cargo-releaseconfiguration viarelease.toml(including tag naming and a pre-release test hook). - Replace
release-plzGitHub Actions workflow/config with a newReleaseworkflow that runs semver checks and (optionally) publishes on tag pushes. - Mark
simple-someip-embassy-netas non-publishable (publish = false) to ensure only the main crate is intended for publication.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| simple-someip-embassy-net/Cargo.toml | Marks the adapter crate as publish = false to prevent accidental publishing. |
| release.toml | Introduces cargo-release configuration (tagging, branch restriction, pre-release test hook). |
| release-plz.toml | Removes legacy release-plz configuration. |
| .github/workflows/release.yml | Adds new release workflow with semver checks and a gated publish job using cargo-release. |
| .github/workflows/release-plz.yml | Removes legacy release-plz GitHub Actions workflow. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Two fixes to the new Release workflow:
1. Semver Checks failed because the action's default `all-features` group
unions `bare-metal-runtime` (no-alloc, nightly) with the alloc features,
tripping the mutual-exclusion `compile_error!` in lib.rs so rustdoc — and
thus the whole check — aborts. Mirror ci.yml's SemVer Check: pin
`feature-group: only-explicit-features` to the host/alloc feature set.
2. `cargo release publish --workspace` does NOT honor the `publish = false`
manifest flags on the examples / embassy-net member (verified via dry-run:
it plans to publish all 7 members); `cargo publish` then rejects the
non-publishable ones. Scope to `--package simple-someip`. Also document
in release.toml that only simple-someip is released, which makes the
single `v{version}` tag/message unambiguous under `shared-version = false`.
Addresses both Copilot review threads on #141.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Drop the `pull_request` trigger: the PR-time semver gate duplicates `CI / SemVer Check` (ci.yml) with the same action and feature set. This workflow's semver-checks job is the publish gate, so it only needs to run on release-tag pushes. - Narrow `permissions` to `contents: read`: no job creates tags/releases or pushes; publish uses CARGO_REGISTRY_TOKEN, not the GITHUB_TOKEN. Addresses the two Copilot review threads on #141. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Drop the stale "once the publish proxy is live" precondition. Publishing to crates.io needs only CARGO_REGISTRY_TOKEN + crates.io reachability; the Kellnr crates.io proxy fronts crates.io for dft-side consumption of the published crate, a separate concern. The real gate is the token + the decision to cut a first version. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Holding — as part of the protocol-stack reframe, this crate is slated to move to a dedicated public repo under a new MicroVision public org (built on the Automotive Wire Codec, consumed internally via the Kellnr proxy). Standing up publish tooling in its current home is therefore on hold pending the org/hosting decision (to be finalized with Zach). Converting to draft rather than closing so the work is easy to resume once the target repo/org is settled. |
Phase A of DFT→Kellnr: standardize simple_someip on cargo-release (tag
v{version}, crates.io,publish=false, CI-owned), retiring release-plz. Examples + embassy-net staypublish=false; onlysimple-someippublishes.Publish stays deliberate: the publish job only runs when
vars.SIMPLE_SOMEIP_PUBLISH_ENABLEDis set and a crates.io token is provisioned. Nothing publishes on merge.maincurrently has ~12 failing lib tests (heaplessevent_group_ids capacity exceeded: 67atsrc/server/mod.rs:370). They're unrelated to this CI/manifest change, but thepre-release-hookruns the test suite, so a realcargo releaseis blocked until they're fixed.Note: cargo-release does not auto-generate a CHANGELOG / GitHub release the way release-plz did — intentional for this flow.
Part of the DFT→Kellnr Phase A program (per-repo release model).