This document explains how to create new releases of the Initiat CLI. The process is automated via GitHub Actions - you just need to update the changelog and create a release tag.
- Release Overview
- Versioning Strategy
- Pre-Release Checklist
- Creating a Release
- GitHub Actions Automation
- Post-Release Tasks
- Rollback Procedures
The Initiat CLI uses automated releases via GitHub Actions. When you create a release tag, GitHub Actions automatically:
- Builds cross-platform binaries for macOS, Linux, and Windows (AMD64 and ARM64)
- Runs all tests and security scans
- Creates GitHub release with downloadable archives
- Generates release notes from changelog
Your job: Update the changelog and create a release tag. GitHub Actions does the rest!
We follow Semantic Versioning 2.0.0:
- MAJOR (X.0.0): Breaking changes, incompatible API changes
- MINOR (X.Y.0): New features, backward-compatible functionality
- PATCH (X.Y.Z): Bug fixes, backward-compatible
v1.0.0 # Initial stable release
v1.1.0 # New features, backward compatible
v1.1.1 # Bug fixes only
v2.0.0 # Breaking changes
v1.2.0-beta.1 # Pre-release version
Before creating a release, ensure all items are completed:
- All tests pass (
make test) - Code is formatted (
make format-check) - Linting passes (
make lint) - Security scan passes (
make security) - All CI checks pass on main branch
- README.md is updated
- CHANGELOG.md is updated with new version
- All new features are documented
- Version number determined
- Release notes prepared
- Breaking changes documented (if any)
Update CHANGELOG.md with your new version:
## [Unreleased]
## [v1.1.0] - 2024-01-15
### Added
- New feature 1
- New feature 2
### Changed
- Improved performance
- Updated dependencies
### Fixed
- Fixed bug 1
- Fixed bug 2# Create and push the release tag
git tag -a v1.1.0 -m "Release v1.1.0"
git push origin v1.1.0- Go to Actions tab
- Watch the release workflow run
- Wait for all checks to pass
- Go to Releases page
- Verify the release was created with all binaries
- Check that release notes were generated correctly
That's it! GitHub Actions handles all the building, testing, and distribution.
When you push a release tag, GitHub Actions automatically:
- Runs all tests and security scans
- Builds binaries for all platforms:
initiat-darwin-amd64.tar.gz(macOS Intel)initiat-darwin-arm64.tar.gz(macOS Apple Silicon)initiat-linux-amd64.tar.gz(Linux x64)initiat-linux-arm64.tar.gz(Linux ARM64)initiat-windows-amd64.zip(Windows x64)
- Creates GitHub release with all binaries
- Generates release notes from your changelog
- Actions Tab: github.com/InitiatDev/initiat-cli/actions
- Releases Page: github.com/InitiatDev/initiat-cli/releases
- Check the Actions tab for error details
- Fix any issues and create a new tag
- GitHub Actions will retry the release process
- Verify release appears on GitHub
- Test download and installation
- Announce release to team
- Send release announcement
- Update project website (if applicable)
- Notify stakeholders
# Delete the release tag
git tag -d v1.1.0
git push origin :refs/tags/v1.1.0
# Delete GitHub release
gh release delete v1.1.0
# Create hotfix and new release
git checkout -b hotfix/v1.1.1
# ... make fixes ...
git tag -a v1.1.1 -m "Release v1.1.1 (hotfix)"
git push origin v1.1.1Release notes should follow this format:
# Release v1.1.0
## What's New
- New feature 1
- New feature 2
- Performance improvements
## Bug Fixes
- Fixed issue 1
- Fixed issue 2
- Security improvements
## Breaking Changes
- None (or list breaking changes)
## Installation
Download the latest release from [GitHub Releases](https://github.com/InitiatDev/initiat-cli/releases)- Clear and Concise: Use simple, clear language
- User-Focused: Focus on user benefits, not technical details
- Categorized: Group changes by type (features, fixes, etc.)
- Actionable: Include installation and upgrade instructions
- Complete: Include all significant changes
- Major Releases: Every 6-12 months
- Minor Releases: Every 1-3 months
- Patch Releases: As needed for critical fixes
- Pre-releases: For testing new features
- All Tests Pass: No failing tests
- Security Scan: No high-severity vulnerabilities
- Code Quality: Passes all linting and formatting checks
- Documentation: All changes documented
- Manual Testing: Tested on target platforms
- Release Announcements: Notify users of new releases
- Breaking Changes: Clearly communicate breaking changes
- Migration Guides: Provide upgrade instructions
- Support: Be available for user questions
The Initiat CLI release process is designed to ensure:
- Quality: All releases are thoroughly tested
- Security: Security scans and vulnerability checks
- Reliability: Automated testing and validation
- Usability: Clear documentation and migration guides
- Support: Responsive issue resolution
By following these procedures, we ensure that every release maintains the high quality and security standards expected by our users.