fix(release): decouple module artifacts from the crates.io publish - #13
Conversation
Add an `existing_tag` input to the release workflow so that module bundles can be rebuilt and re-uploaded for a tag that already exists, without re-publishing the crate or bumping the version. This decouples the artifact jobs from the publish job by introducing a `release-target` job that resolves the tag and version from either the publish output or the manually supplied tag, allowing the release pipeline to recover from a failed artifact upload without re-running the entire process. Auto-committed-on: dragonfly Co-authored-by: Medulla <medulla@tinyhumans.ai>
|
Warning Review limit reached
Next review available in: 48 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
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 |
The v0.2.0 run tagged
mainand then failed at Publish to crates.io withplease provide a non-empty token— this repository has noCARGO_REGISTRY_TOKEN. Becausenative-bundlesandgithub-releasebothneeds: publish, they were skipped, sov0.2.0exists as a tag with no release, no artifacts and nochecksum.toml.That coupling is the actual defect. Nothing about building the module
cdylibtouches crates.io. The bundles needed a tag and a version from the publish job, not a successful upload — and because those arrived as job outputs, a missing registry secret took the module release down with it.The change
A new
release-targetjob resolves the tag and version, and the bundles depend on it rather than onpublish:It runs under
always()so a skipped or failed crates.io upload still yields a target. The two are genuinely independent releases that happened to share a job; a redpublishis still red and still visible.Recovery path
A new
existing_taginput builds and publishes artifacts for a tag that already exists, skipping the bump and the publish. That is whatv0.2.0needs right now — it is tagged,mainis at that version, and only the artifacts are missing. Without it the only options are deleting a pushed tag or burning a version number.The input is validated: the tag must actually exist, and the version is derived from it rather than trusted separately.
Still outstanding, and not fixed here
CARGO_REGISTRY_TOKENis genuinely absent and only a maintainer can add it. This change does not paper over that — it stops one missing secret from blocking an unrelated deliverable. The crate will not reach crates.io until the token exists.