Release Process
Preconditions
- •Repo is clean.
- •Release tag does not already exist (
git tag --list vX.Y.Z).
Steps
- •Create release branch:
git checkout -b release/vX.Y.Z - •Bump version in
Cargo.toml, then runcargo check(syncsCargo.lockif needed). - •Update changelog in
CHANGELOG.md:- •Keep
## [Unreleased]at the top. - •Add
## [X.Y.Z]. - •Include user-facing changes only.
- •Ensure each entry links to its corresponding GitHub PR.
- •Keep
- •Run preflight checks:
- •
cargo fmt --check - •
cargo check - •
cargo test
- •
- •Dry-run publish:
- •
cargo publish --locked --dry-run - •Review output for extraneous files.
- •
- •Commit and open PR:
- •Commit release-prep changes.
- •Push branch and open PR to
main. - •PR title:
chore(release): X.Y.Z
- •Merge PR after CI is green.
- •Sync and tag:
- •
git checkout main && git pull --ff-only - •
git tag vX.Y.Z && git push origin vX.Y.Z
- •
- •Publish crate:
- •
cargo publish --locked
- •
- •Verify publish:
- •Confirm release workflow completed successfully.
- •Confirm GitHub release exists for
vX.Y.Z. - •Confirm the crate version is visible on crates.io.
Conventions
- •Follow semver:
- •patch = fixes
- •minor = features
- •major = breaking changes
- •Branch:
release/vX.Y.Z - •PR title:
chore(release): X.Y.Z - •Tag:
vX.Y.Z
Notes
- •Do not include secrets or token values in changelog, logs, or PR descriptions.