This document describes the release process for Engram.
Engram uses Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes (backward compatible)
Current version: See Cargo.toml
-
Update CHANGELOG.md
- Add new version header with date
- Document all changes since last release
- Categorize: Added, Changed, Deprecated, Removed, Fixed, Security
-
Update Version in Cargo.toml
# Edit version in Cargo.toml version = "X.Y.Z"
-
Run Full Test Suite
cargo test --all-features cargo clippy --all-features cargo fmt --all -- --check -
Update Nix Flake (if applicable)
# Ensure flake.nix has correct version
-
Create and Push Tag
# Create annotated tag git tag -a vX.Y.Z -m "Release vX.Y.Z" # Push tag git push origin vX.Y.Z
-
GitHub Actions Will Automatically:
- Build release binaries
- Create GitHub release
- Upload artifacts (Linux binary, Nix package, checksums)
-
Verify Release
- Check GitHub release was created
- Verify downloads work
- Confirm checksums match
-
Announce Release
- Update documentation if needed
- Notify users (social media, newsletters)
- Binary:
engram-linux-amd64 - Nix:
engram-nix - Checksums: SHA256 files
# Install latest release
nix run github:vincents-ai/engram
# Or install specific version
nix run github:vincents-ai/engram/vX.Y.Zcargo install engrambrew install vincents-ai/engram/engram- Runs on: push to main/develop, pull requests
- Jobs:
test: Unit tests, clippy, fmtbuild: Release binary buildnix-build: Nix package buildexamples: Verify all examples compilecoverage: Code coverage with tarpaulin
- Triggered by: git tag push (
v*) - Jobs:
release: Build binaries, create GitHub releaserelease-brew: Update Homebrew formulanotify: Send notifications
- Triggered by: schedule (weekly), dependency changes
- Jobs:
security-audit: Run cargo auditreport: Create issues for vulnerabilities
For CI/CD to work, set these GitHub secrets:
HOMEBREW_TOKEN: GitHub PAT for Homebrew updatesSLACK_WEBHOOK_URL: Slack webhook for notifications (optional)
Release artifacts include:
engram-linux-amd64: Linux x86_64 binaryengram-nix: Nix package*-sha256: Checksum files for verification
Verify downloaded artifacts:
# Download checksums
curl -L https://github.com/vincents-ai/engram/releases/download/vX.Y.Z/engram-linux-amd64.sha256
# Verify
sha256sum -c engram-linux-amd64.sha256
sha256sum -c engram-nix.sha256If a release has critical issues:
-
Patch Release
# Create patch version git checkout vX.Y.Z # Fix the issue git commit -m "fix: critical issue in vX.Y.Z" git tag -a vX.Y.Z -m "Hotfix vX.Y.Z" git push origin vX.Y.Z
-
GitHub Release Notes
- Mark broken release as "Latest" on GitHub releases page
- Create new release as "Latest"
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Security: Report vulnerabilities via GitHub Security Advisories