chore: revive and improve release automation#2266
Conversation
Co-authored-by: Steve Loeppky <biglep@filoz.org>
- Update release-check.yml to use 'cargo publish --workspace --dry-run' - Update releaser.yml to automate 'cargo publish --workspace' on merge - Update CONTRIBUTING.md to reflect the new automated process and remove outdated limitations
…-workflows # Conflicts: # CONTRIBUTING.md
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #2266 +/- ##
=======================================
Coverage 77.02% 77.02%
=======================================
Files 143 143
Lines 14187 14187
=======================================
Hits 10927 10927
Misses 3260 3260 🚀 New features to boost your workflow:
|
- Enable OIDC trusted publishing for crates.io (id-token: write) - Use --no-default-features for cargo publish to avoid OpenCL dependency - Update release documentation to reflect these changes
|
|
||
| permissions: | ||
| contents: write | ||
| id-token: write |
There was a problem hiding this comment.
We should verify that this workflow is listed as a trusted publisher in crates.io.
There was a problem hiding this comment.
I'd look but I can't find the crate settings even though I should be in the team that has publish access, crates.io teams is janky, maybe @hanabi1224 || @LesnyRumcajs has a clue
There was a problem hiding this comment.
There was a problem hiding this comment.
I think:
- https://crates.io/crates/fvm_ipld_amt/settings
- https://crates.io/crates/fvm_ipld_hamt/settings
- https://crates.io/crates/fvm_ipld_kamt/settings
- https://crates.io/crates/fvm_ipld_car/settings
- https://crates.io/crates/fvm_ipld_blockstore/settings
- https://crates.io/crates/fvm_ipld_bitfield/settings
- https://crates.io/crates/fvm_ipld_encoding/settings
There was a problem hiding this comment.
I think:
- https://crates.io/crates/fvm_ipld_amt/settings
- https://crates.io/crates/fvm_ipld_hamt/settings
- https://crates.io/crates/fvm_ipld_kamt/settings
- https://crates.io/crates/fvm_ipld_car/settings
- https://crates.io/crates/fvm_ipld_blockstore/settings
- https://crates.io/crates/fvm_ipld_bitfield/settings
- https://crates.io/crates/fvm_ipld_encoding/settings
I did the same setup for those as well - my bad for missing those previously.
|
Added @LesnyRumcajs as another maintainer who may be able to get to looking at this sooner. |
|
I'm OOO until Tuesday, best bet is @hanabi1224 now, I guess! |
|
worth a try! wouldn't harm to push through a release or three this has to also work for v3 and v4 so I guess we'd backport it to there as well? |
Yes, I don't see why not. I would test it in the default branch first and then do the backport if everything works as expected. |
|
What are the next steps? Do we just need to try it out? |
|
Yes, I did the testing we can do without doing a proper release in #2267 |
|
@LesnyRumcajs or @hanabi1224 : is there an upcoming proper release we can try this out with to validate it? |
|
Ok, so it seems like:
|
|
@galargh Can you please help me understand why do we need two very similar workflows? I understand one is for checking the release and another for an actual release, but ideally there'd be just one with a |



This PR revives the release automation effort from #2027 with several key improvements:
release-check.ymlto usecargo publish --workspace --dry-run. This leverages Cargo 1.90+'s native multi-package publishing to correctly verify the entire dependency graph, solving the previous failure with interdependent crates.releaser.ymlto include acargo publish --workspacestep. This automates the final push to crates.io upon merge, ensuring crates are published in the correct order.RELEASE.mdto reflect the new automated process and cleaned upCONTRIBUTING.mdto match the current project structure.master, including the transition of release documentation to its own file.Test Plan
To verify these changes, we will perform a live test by simulating a multi-crate release:
galargh/releasebranch.fvm_shared,fvm, andfvm_sdksimultaneously inCargo.toml.release-checkworkflow triggers correctly.Dry-run publishstep (cargo publish --workspace --dry-run) passes.Checklist: