GitHub Release Best Practices
Release management for Rust workspaces with versioning, changelog, and quality gates.
Key Steps
- Quality Gates:
./scripts/quality-gates.sh - Version Bump: Update
Cargo.tomlworkspace version - Changelog: Update
CHANGELOG.md(Keep a Changelog format) - Tag + Push:
git tag -a v0.X.Y -m "Release v0.X.Y" && git push origin v0.X.Y - GitHub Release:
gh release create v0.X.Y --title "v0.X.Y" --notes-file CHANGELOG.md
Semver Matrix
| Change Type | Bump | Example |
|---|---|---|
| Breaking | MAJOR | 0.1.7 → 1.0.0 |
| New Feature | MINOR | 0.1.7 → 0.2.0 |
| Bug Fix | PATCH | 0.1.7 → 0.1.8 |
For 0.x: MINOR for most changes, PATCH for critical bug fixes.
Changelog Categories
- Added - New features
- Changed - Modified functionality
- Deprecated - Planned removals
- Removed - Deleted features
- Fixed - Bug fixes
- Security - Vulnerability patches
Modern Tooling (ADR-034)
# API compatibility check
cargo semver-checks check-release --workspace
# Version bump automation
cargo release patch # handles version + commit + tag
# Binary distribution
cargo dist init # generates release.yml workflowCRITICAL: Cargo.toml version must match git tag (without 'v'). Use cargo release to ensure atomicity.
Release Notes Template
## Summary
Brief description of changes.
## Fixed / Changed / Added
- Item 1
- Item 2
## Performance / Security (if applicable)
- Metrics, improvements
## Full Changelog
https://github.com/d-o-hub/rust-self-learning-memory/compare/v0.1.7...v0.1.8References
- ADR-034: Release Engineering Modernization
- ADR-031: Cargo Lock Integrity