This document outlines how to build, test, and publish AOF binaries to make them available via the installation script at https://docs.aof.sh/install.sh
The release process is fully automated via GitHub Actions. When you create a git tag, GitHub Actions will:
- Build binaries for multiple platforms
- Calculate checksums
- Create a GitHub release with assets
- Deploy the install script
- Git with push access to https://github.com/agenticdevops/aof
- Rust toolchain installed locally (for testing builds)
- GitHub Actions enabled on the repository
Update the version in aof/Cargo.toml:
[workspace.package]
version = "0.2.0" # Change thisTest the build locally before releasing:
# Build for current platform
cd aof
cargo build --release --package aofctl
# Test the binary
./target/release/aofctl --version
./target/release/aofctl api-resources# Create and push a version tag
git tag -a v0.2.0 -m "Release v0.2.0: Description of changes"
git push origin v0.2.0This triggers the GitHub Actions workflow automatically.
- Go to: https://github.com/agenticdevops/aof/actions
- Watch the "Build and Release Binaries" workflow
- Wait for all platforms to build successfully
- The workflow will create a GitHub Release with all binaries
Once complete, verify at: https://github.com/agenticdevops/aof/releases
You should see:
- Binaries for each platform (linux-x86_64, macos-x86_64, etc.)
- SHA256 checksums for each binary
- Release notes
The install script is served from the Docusaurus site at https://docs.aof.sh/install.sh
The install script is automatically deployed with the Docusaurus site:
- The script lives in
docusaurus-site/static/install.sh - GitHub Actions deploys it to GitHub Pages (docs.aof.sh)
- It's accessible at
https://docs.aof.sh/install.sh
Alternative (GitHub Raw Content):
https://raw.githubusercontent.com/agenticdevops/aof/main/scripts/install.sh
After releasing, test the installation script:
# Test with latest version
curl -sSL https://docs.aof.sh/install.sh | bash
# Test with specific version
curl -sSL https://docs.aof.sh/install.sh | bash -s -- --version v0.2.0
# Test with custom install directory
curl -sSL https://docs.aof.sh/install.sh | bash -s -- --install-dir /usr/local/bin
# Verbose output for debugging
curl -sSL https://docs.aof.sh/install.sh | bash -s -- --verboseThe release workflow builds for:
-
Linux
- x86_64 (Intel/AMD 64-bit)
- aarch64 (ARM 64-bit)
-
macOS
- x86_64 (Intel)
- aarch64 (Apple Silicon M1/M2/M3)
-
Windows
- x86_64 (Intel/AMD 64-bit)
The install.sh script:
- ✅ Auto-detects your OS and CPU architecture
- ✅ Downloads the correct binary from GitHub releases
- ✅ Verifies checksums (if sha256sum available)
- ✅ Installs to ~/.local/bin by default
- ✅ Makes binary executable
- ✅ Warns if binary not in PATH
- ✅ Verifies successful installation
- ✅ Provides helpful next steps
- Check the Actions log: https://github.com/agenticdevops/aof/actions
- Common issues:
- Cross-compilation tools missing (automatic via
cross) - Rust target not installed (automatic)
- Dependency version conflicts (check Cargo.toml)
- Cross-compilation tools missing (automatic via
- Check network connectivity
- Verify GitHub releases are publicly accessible
- Run with
--verboseflag:bash -s -- --verbose - Check logs in temp directory
- Verify architecture:
uname -m - Check file permissions:
ls -l ~/.local/bin/aofctl - Verify binary works:
~/.local/bin/aofctl --version - Check PATH:
echo $PATH | grep .local/bin
If GitHub Actions fails, you can manually:
-
Build locally:
cargo build --release --package aofctl
-
Create checksums:
sha256sum target/release/aofctl > aofctl.sha256 -
Upload to GitHub Releases:
gh release create v0.2.0 target/release/aofctl aofctl.sha256 \ --title "AOF v0.2.0" \ --notes "Release notes here"
-
Update install script location
Before each release:
- Update version in
aof/Cargo.toml - Update CHANGELOG.md (if exists)
- Commit changes
- Run tests:
cargo test --package aofctl - Build locally:
cargo build --release --package aofctl - Test locally:
./target/release/aofctl --version - Create git tag:
git tag -a v0.2.0 -m "Release message" - Push tag:
git push origin v0.2.0 - Monitor GitHub Actions build
- Verify GitHub Release created
- Test installation script
- Update documentation links if needed
Follow Semantic Versioning:
- MAJOR.MINOR.PATCH (e.g., 1.2.3)
- MAJOR: Breaking changes
- MINOR: New features
- PATCH: Bug fixes
Examples:
v0.1.0- Initial releasev0.1.1- Bug fixv0.2.0- New featuresv1.0.0- Stable release
The installation script always downloads from GitHub Releases. To automatically use the latest version:
curl -sSL https://docs.aof.sh/install.sh | bashTo pin to a specific version:
curl -sSL https://docs.aof.sh/install.sh | bash -s -- --version v0.1.0- Create release tag:
git tag -a v0.1.0 -m "Initial release" - Push tag to trigger build:
git push origin v0.1.0 - Monitor build at: https://github.com/agenticdevops/aof/actions
- Verify release: https://github.com/agenticdevops/aof/releases
- Test installation:
curl -sSL https://docs.aof.sh/install.sh | bash
For issues with the release process:
- Check GitHub Actions logs
- Review this document
- Open an issue: https://github.com/agenticdevops/aof/issues