Versioning, branching, and release rules for the Aerostack CLI.
We follow Semantic Versioning 2.0.0:
- MAJOR (x.0.0): Breaking changes, incompatible API changes
- MINOR (1.x.0): New features, backward-compatible
- PATCH (1.0.x): Bug fixes, backward-compatible
| Change | Version bump |
|---|---|
| Remove or rename a command | MAJOR |
| Add new subcommand | MINOR |
Fix bug in aerostack dev |
PATCH |
| Change default behavior | MAJOR |
| Add new flag (non-breaking) | MINOR |
| Branch | Purpose |
|---|---|
main |
Production-ready code. All releases are cut from main. |
develop |
Integration branch for features (optional). |
feature/* |
New features (e.g. feature/db-migrate). |
fix/* |
Bug fixes (e.g. fix/dev-port-binding). |
release/v* |
Release preparation (e.g. release/v1.0.0). |
Rule: Only merge to main via Pull Request. All PRs must pass CI.
- All tests pass
- CHANGELOG.md updated
- Version bumped in code (if applicable)
- No uncommitted changes on
main
# Ensure you're on main and up to date
git checkout main
git pull origin main
# Create and push tag (triggers GitHub Actions)
git tag v1.0.0
git push origin v1.0.0- Builds binaries for Linux, macOS, Windows (amd64, arm64)
- Creates GitHub Release with changelog
- Uploads artifacts (tar.gz, zip)
- Optionally: Homebrew tap, npm (if applicable)
- Verify release assets on Releases
- Update install script / docs if needed
- Announce in team channels
All commits should follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]
| Type | Use for |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
chore |
Maintenance (deps, config) |
refactor |
Code change, no feature/fix |
test |
Adding or updating tests |
ci |
CI/CD changes |
feat(dev): add hot reload for template changes
fix(deploy): handle missing aerostack.toml gracefully
docs: update README quick start
chore(deps): bump cobra to v1.8.0
- Maintain
CHANGELOG.mdin Keep a Changelog format - Update before each release
- GoReleaser can auto-generate from commits (see
.goreleaser.yaml)
If a release has critical issues:
- Yank the release (GitHub: mark as pre-release or delete)
- Create a patch release (e.g. v1.0.1) with the fix
- Document in CHANGELOG under "Security" or "Fixed"