This document describes how to create releases for ConvCom with automated binary builds.
- Push access to the repository
- GitHub Actions enabled on the repository
- All changes merged into the main branch
Update the version in Cargo.toml:
[package]
name = "convcom"
version = "1.0.0" # Update this
edition = "2021"# Make sure you're on the main branch with latest changes
git checkout main
git pull origin main
# Create a version tag (must start with 'v')
git tag v1.0.0
# Push the tag to trigger release workflow
git push origin v1.0.0Once you push the tag, GitHub Actions will automatically:
-
Build binaries for all supported platforms:
- Linux (x86_64)
- Windows (x86_64)
- macOS Intel (x86_64)
- macOS Apple Silicon (aarch64)
-
Create a GitHub Release with:
- Release notes
- Installation instructions
- All platform binaries attached
-
Upload artifacts as compressed files:
convcom-linux-x86_64.tar.gzconvcom-windows-x86_64.exe.zipconvcom-macos-x86_64.tar.gzconvcom-macos-aarch64.tar.gz
- Go to the Releases page
- Check that the new release appears with all binaries
- Test download and installation on different platforms
The release process is handled by .github/workflows/release.yml:
- Trigger: Pushing tags matching
v*.*.*pattern - Builds: Cross-compilation for 4 platforms
- Artifacts: Compressed binaries for easy distribution
- Release: Automatic GitHub release with formatted description
We follow Semantic Versioning:
v1.0.0- Major release (breaking changes)v1.1.0- Minor release (new features, backward compatible)v1.1.1- Patch release (bug fixes)
If automated release fails, you can create releases manually:
-
Build binaries locally:
# Linux cargo build --release --target x86_64-unknown-linux-gnu # Windows (on Windows or with cross-compilation) cargo build --release --target x86_64-pc-windows-msvc # macOS (on macOS) cargo build --release --target x86_64-apple-darwin cargo build --release --target aarch64-apple-darwin
-
Compress binaries:
tar -czvf convcom-linux-x86_64.tar.gz target/x86_64-unknown-linux-gnu/release/convcom # ... repeat for other platforms -
Create release manually on GitHub with the compressed files
Build fails for a specific platform:
- Check if the target is properly added in the workflow
- Verify cross-compilation dependencies
Release not triggered:
- Ensure tag follows
v*.*.*pattern exactly - Check that GitHub Actions is enabled for the repository
Binary doesn't work:
- Verify the build completed successfully
- Check for missing runtime dependencies on target platform