git status # All changes committed?
cargo test # Tests pass?
cargo fmt # Code formatted?cargo release patch # Shows what will happen# Patch release (0.1.17 → 0.1.18)
cargo release patch --execute
# Minor release (0.1.17 → 0.2.0)
cargo release minor --execute
# Major release (0.1.17 → 1.0.0)
cargo release major --executeNote: Always specify patch/minor/major.
- ✅ Bumps version in
Cargo.toml - ✅ Runs tests:
cargo test - ✅ Checks formatting:
cargo fmt --check - ✅ Updates
CHANGELOG.md - ✅ Publishes to crates.io
- ✅ Creates commit:
Release vX.Y.Z - ✅ Creates tag:
vX.Y.Z - ✅ Pushes to remote
cargo release patch --execute --no-publish # Don't publish to crates.io
cargo release patch --execute --no-push # Don't push to GitCheck on GitHub:
- New release in "Releases" tab
- New tag in "Tags" tab
- New commit on main branch
Check on crates.io:
| Issue | Fix |
|---|---|
| "Uncommitted changes" | git add . && git commit -m "msg" |
| "No commits since last release" | Make some commits first |
| "crates.io already has this version" | Bump the version |
| "Failed to push" | Check push access and branch |
| "Failed to publish" | Run cargo login |
cargo release --help # Full help
cargo release --dry-run # Preview without changes
cargo release --allow-dirty # Skip git status check
cargo release --sign-commit # GPG sign commits
cargo release --sign-tag # GPG sign tags- release.toml - Release automation configuration
- RELEASE.md - Full documentation
- CHANGELOG.md - Release notes (auto-updated)
Quick tip: Always run cargo release patch first to preview!