| # Release Process | |
| > **Last Updated**: 2025-12-06 | |
| This document describes the release workflow for DeepBoner. | |
| ## Version Numbering | |
| DeepBoner uses [Semantic Versioning](https://semver.org/): | |
| ``` | |
| MAJOR.MINOR.PATCH | |
| 1.0.0 - First stable release | |
| 0.2.0 - New features (backwards compatible) | |
| 0.1.1 - Bug fixes only | |
| ``` | |
| ### Pre-release Versions | |
| ``` | |
| 0.1.0-alpha.1 - Early development | |
| 0.1.0-beta.1 - Feature complete, testing | |
| 0.1.0-rc.1 - Release candidate | |
| ``` | |
| ## Release Workflow | |
| ### 1. Prepare the Release | |
| ```bash | |
| # Ensure you're on main and up to date | |
| git checkout main | |
| git pull origin main | |
| # Run all checks | |
| make check | |
| ``` | |
| ### 2. Update Version | |
| Edit `pyproject.toml`: | |
| ```toml | |
| [project] | |
| version = "0.2.0" # Update this | |
| ``` | |
| ### 3. Update CHANGELOG | |
| Add release notes to `CHANGELOG.md`: | |
| ```markdown | |
| ## [0.2.0] - 2025-12-15 | |
| ### Added | |
| - New feature X | |
| ### Fixed | |
| - Bug in Y | |
| ### Changed | |
| - Improved Z | |
| ``` | |
| ### 4. Create Release Commit | |
| ```bash | |
| git add pyproject.toml CHANGELOG.md | |
| git commit -m "release: v0.2.0" | |
| ``` | |
| ### 5. Tag the Release | |
| ```bash | |
| git tag -a v0.2.0 -m "Release v0.2.0" | |
| ``` | |
| ### 6. Push | |
| ```bash | |
| git push origin main | |
| git push origin v0.2.0 | |
| ``` | |
| ### 7. Create GitHub Release | |
| 1. Go to GitHub β Releases β New Release | |
| 2. Select the tag (v0.2.0) | |
| 3. Copy release notes from CHANGELOG | |
| 4. Publish release | |
| ### 8. Deploy to HuggingFace Spaces | |
| ```bash | |
| # Push to HuggingFace | |
| git push huggingface-upstream main | |
| ``` | |
| ## Release Checklist | |
| ### Before Release | |
| - [ ] All tests pass (`make check`) | |
| - [ ] CHANGELOG updated | |
| - [ ] Version bumped in pyproject.toml | |
| - [ ] Documentation updated | |
| - [ ] No outstanding critical bugs | |
| - [ ] Security audit clean (`uv run pip-audit`) | |
| ### After Release | |
| - [ ] GitHub release created | |
| - [ ] HuggingFace Space updated | |
| - [ ] Announce release (if significant) | |
| ## Hotfix Process | |
| For urgent fixes on released versions: | |
| ```bash | |
| # Create hotfix branch from tag | |
| git checkout -b hotfix/0.1.1 v0.1.0 | |
| # Make fix | |
| # ... | |
| # Bump patch version | |
| # Update CHANGELOG | |
| # Commit and tag | |
| git commit -m "fix: critical bug in X" | |
| git tag -a v0.1.1 -m "Hotfix v0.1.1" | |
| # Push | |
| git push origin v0.1.1 | |
| # Merge back to main | |
| git checkout main | |
| git merge hotfix/0.1.1 | |
| git push origin main | |
| ``` | |
| ## CI/CD Integration | |
| Releases trigger GitHub Actions: | |
| ```yaml | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| jobs: | |
| release: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build and test | |
| run: make check | |
| ``` | |
| ## Rollback Procedure | |
| If a release has critical issues: | |
| ```bash | |
| # Revert to previous version in HuggingFace | |
| git push huggingface-upstream v0.1.0:main --force | |
| # Document in CHANGELOG | |
| # Plan hotfix release | |
| ``` | |
| ## Version Locations | |
| Keep these in sync: | |
| | File | Field | | |
| |------|-------| | |
| | `pyproject.toml` | `version = "X.Y.Z"` | | |
| | `CHANGELOG.md` | `## [X.Y.Z] - YYYY-MM-DD` | | |
| | Git tag | `vX.Y.Z` | | |
| --- | |
| ## Related Documentation | |
| - [CHANGELOG](../../CHANGELOG.md) | |
| - [Contributing Guide](../../CONTRIBUTING.md) | |
| - [Deployment Guide](../deployment/docker.md) | |