Releases are handled by release-plz via
.github/workflows/release-plz.yml, running on statrs-dev/statrs.
- Every push to
mainruns therelease-plz-prjob. It looks at commits since the last tag, works out the next version per semver (pre-1.0: a breaking change bumps minor, everything else patch), updatesCargo.tomlandCHANGELOG.md, and opens or updates a single "Release" PR with the diff. - Review that PR like any other. Adjust the changelog wording, or edit the version in the PR directly if the auto-computed bump isn't the one you want to ship.
- Merging the Release PR to
maintriggers therelease-plz-releasejob, which tags the commit, runscargo publish, and cuts a GitHub release.
RELEASE_PLZ_TOKEN and CARGO_REGISTRY_TOKEN are already set as repo
secrets on statrs-dev/statrs.
- Merge whatever's going into the release into
mainas usual. - Wait for release-plz to open (or update) the Release PR.
- If the version it proposed isn't the one you want to ship, edit
Cargo.toml(and the changelog heading) in that PR directly — release-plz only reads commit history, it doesn't know about anything you haven't written as afeat/fix/breaking-change commit. - Merge — the release job publishes whatever version is in
Cargo.tomlat merge time, so any manual edit is picked up automatically.
No local cargo publish or manual tagging needed once this is merged to
main and the workflow is live.