Release Process
About 2 min
Release Process
This document describes the release process for Audio Ninja.
Release Workflow
flowchart TD
A["Update Version<br/>in Cargo.toml"] --> B["Update CHANGELOG.md<br/>with new features/fixes"]
B --> C["Commit & Create Git Tag<br/>git tag v0.2.0"]
C --> D["Push to GitHub<br/>including tag"]
D --> E{GitHub Actions<br/>Triggered}
E -->|Builds Binaries| F["Linux x86_64<br/>Build"]
E -->|Builds Binaries| G["Linux ARM64<br/>Build"]
F --> H["Create Release<br/>with Assets"]
G --> H
H --> I["Upload SHA256<br/>Checksums"]
I --> J["Publish Release<br/>on GitHub"]
J --> K["Announce:<br/>Discussions, Social"]Version Numbering
Audio Ninja follows Semantic Versioning:
- Major (X.0.0): Breaking API changes
- Minor (0.X.0): New features, backward compatible
- Patch (0.0.X): Bug fixes, backward compatible
Automated Release Process
Releases are automated via GitHub Actions. To create a new release:
1. Update Version Numbers
Update version in workspace Cargo.toml:
# Edit Cargo.toml
[workspace.package]
version = "0.2.0" # Update this line2. Update CHANGELOG
Document changes in CHANGELOG.md:
## [0.2.0] - 2025-01-15
### Added
- Feature X
- Feature Y
### Fixed
- Bug Z3. Commit and Tag
git add Cargo.toml Cargo.lock CHANGELOG.md
git commit -m "chore: bump version to 0.2.0"
git tag v0.2.0
git push origin main
git push origin v0.2.04. Automated Build
The release workflow will automatically:
- Create a GitHub release
- Build binaries for:
x86_64-unknown-linux-gnu(Intel/AMD Linux)aarch64-unknown-linux-gnu(ARM64 Linux)
- Upload assets:
audio-ninja-daemon-linux-{arch}audio-ninja-cli-linux-{arch}- Tarballs with both binaries
- SHA256 checksums
5. Release Notes
Edit the GitHub release to add:
- High-level summary
- Breaking changes (if any)
- Migration guide (if needed)
- Known issues
Manual Release (Local Build)
If you need to build binaries locally:
Prerequisites
# Install cross-compilation tools
sudo apt-get install gcc-aarch64-linux-gnu
# Add Rust targets
rustup target add x86_64-unknown-linux-gnu
rustup target add aarch64-unknown-linux-gnuBuild Commands
# x86_64 Linux
cargo build --release --target x86_64-unknown-linux-gnu -p audio-ninja-daemon
cargo build --release --target x86_64-unknown-linux-gnu -p audio-ninja-cli
# ARM64 Linux
cargo build --release --target aarch64-unknown-linux-gnu -p audio-ninja-daemon
cargo build --release --target aarch64-unknown-linux-gnu -p audio-ninja-cliCreate Release Archive
VERSION="0.2.0"
for TARGET in x86_64-unknown-linux-gnu aarch64-unknown-linux-gnu; do
cd target/$TARGET/release
tar -czf audio-ninja-$TARGET-$VERSION.tar.gz \
audio-ninja-daemon \
audio-ninja
sha256sum audio-ninja-$TARGET-$VERSION.tar.gz >> checksums.txt
cd -
donePre-release Checklist
Before creating a release, ensure:
Post-release Tasks
After release:
Announce on:
- GitHub Discussions
- Project website/blog
- Social media channels
Update documentation sites
Monitor for issues in the new release
Hotfix Process
For urgent bug fixes:
Create a hotfix branch from the release tag:
git checkout -b hotfix/0.2.1 v0.2.0Make the fix and test thoroughly
Update version to next patch (0.2.1)
Commit, tag, and push:
git commit -m "fix: critical bug in transport" git tag v0.2.1 git push origin hotfix/0.2.1 git push origin v0.2.1Merge back to main:
git checkout main git merge hotfix/0.2.1 git push origin main
Release Schedule
- Major releases: As needed for breaking changes
- Minor releases: Every 1-2 months with new features
- Patch releases: As needed for critical bugs
Support Policy
- Latest major version: Full support
- Previous major version: Security fixes only for 6 months
- Older versions: No support (upgrade recommended)
See Also
- CHANGELOG - Project version history and changes
- Daemon Workflow - Deployment and operation
- Calibration - Room calibration versioning
