Versioning & Releases
DS01 Infrastructure uses Semantic Versioning with manual tag-triggered releases.
Version Bump Rules
feat: → MINOR bump (1.0.0 → 1.1.0)
fix: → PATCH bump (1.0.0 → 1.0.1)
feat!: → MAJOR bump (1.0.0 → 2.0.0)
Files
| File | Purpose |
|---|---|
VERSION | Current version (single line, e.g. 1.5.0) |
CHANGELOG.md | Release history |
.github/workflows/release.yml | Release automation |
Creating a Release
- Update
VERSIONfile with the new version number - Commit the change:
git add VERSIONgit commit -m "chore: bump version to 1.5.0"
- Create and push the tag:
git tag v1.5.0git push --tags
- The
release.ymlworkflow automatically:- Validates tag matches semver format (
vX.Y.Z) - Checks
VERSIONfile matches the tag - Creates a GitHub Release with auto-generated notes
- Validates tag matches semver format (
Via dispatch
You can also trigger a release manually:
gh workflow run release.yml -f tag=v1.5.0
Or via the GitHub UI: Actions → Release → Run workflow → enter tag.
Commit Messages
Conventional Commits format is enforced by pre-commit hook. See CONTRIBUTING.md for details.
Pre-commit Setup
pip install pre-commit
pre-commit install --hook-type commit-msg
The commit-msg hook validates:
- Conventional commit format (
type(scope): subject) - Blocks AI attribution in commit messages
- Subject line under 72 characters
Troubleshooting
Version mismatch
If VERSION file doesn't match the latest git tag:
cat VERSION # Check file
git describe --tags --abbrev=0 # Check latest tag
Release workflow fails
The workflow validates that the tag matches vX.Y.Z format and that the VERSION file contents match. Check both before retrying.