Runbook: Release Pave
When to Use
When releasing a new version of pave. This includes new features, bug fixes, or breaking changes that should be published as a tagged release.
Preconditions
- On main branch with clean working directory (
git statusshows no changes) - All tests passing (
cargo testsucceeds) pave checkpasses on all documentation- Version number determined following semantic versioning
Steps
- Verify working directory is clean and on main:
git checkout main git pull origin main git status - Run tests to ensure everything passes:
cargo test - Validate all documentation:
pave check - Update version in Cargo.toml:
# Open Cargo.toml and change the version field to the new version # Example: version = "0.2.0" - Build the release binary:
cargo build --release - Commit the version bump:
git add Cargo.toml Cargo.lock git commit -m "Bump version to v0.x.x" - Create an annotated tag:
git tag -a v0.x.x -m "Release v0.x.x" - Push changes and tags:
git push origin main git push origin --tags - Monitor the CI release workflow:
- Go to Actions tab in the GitHub repository
- Watch the “Release” workflow triggered by the tag
- CI will: run tests, build binaries for all platforms, create GitHub Release, publish to crates.io
Rollback
If a release needs to be reverted:
- Delete the remote tag:
git push origin --delete v0.x.x - Delete the local tag:
git tag -d v0.x.x - Revert the version commit if needed:
git revert HEAD git push origin main
Verification
Check the latest tag exists:
git tag -l | tail -1
Confirm the release binary version:
./target/release/pave --version
Examples
Patch release (bug fixes):
# Version: 0.1.0 -> 0.1.1
git tag -a v0.1.1 -m "Release v0.1.1"
Minor release (new features):
# Version: 0.1.1 -> 0.2.0
git tag -a v0.2.0 -m "Release v0.2.0"
Major release (breaking changes):
# Version: 0.2.0 -> 1.0.0
git tag -a v1.0.0 -m "Release v1.0.0"
Escalation
For a small project like pave, escalation is typically not needed. If issues arise, review the git log and tag history to diagnose problems.