Release Process
Version Management
The single source of truth for the application version is version.json at the repository root. This version is consumed by:
- .NET projects via
Directory.Build.props - GitHub Release workflow for tag validation
Release Checklist
1. Prepare the Release
- Ensure all features for the release are merged to
master - Verify CI/CD pipeline is green on
master - Update
CHANGELOG.md:- Move items from
[Unreleased]to a new version section - Add the release date
- Categorize changes: Added, Changed, Deprecated, Removed, Fixed, Security
- Move items from
2. Bump the Version
- Update
version.jsonwith the new version number:{
"version": "1.1.0"
} - Commit:
git commit -m "chore: bump version to 1.1.0" - Push to
master
3. Create the Release
- Tag the commit:
git tag v1.1.0
git push origin v1.1.0 - The
release.ymlworkflow will automatically:- Validate the tag matches
version.json - Extract release notes from
CHANGELOG.md - Create a GitHub Release
- Validate the tag matches
4. Post-Release
- Verify the GitHub Release was created correctly
- Verify production deployment completed via CI/CD
- Run smoke tests against production
- Announce the release to stakeholders
Versioning Scheme
We follow Semantic Versioning:
| Change Type | Version Bump | Example |
|---|---|---|
| Breaking API changes | Major (X.0.0) | Removing an endpoint |
| New features (backward-compatible) | Minor (0.X.0) | Adding a new endpoint |
| Bug fixes | Patch (0.0.X) | Fixing a calculation |
Pre-releases
For release candidates, use pre-release tags:
git tag v1.1.0-rc.1
These will be marked as pre-releases on GitHub automatically.