Release Process¶
How releases are created and published.
Branching Strategy (Gitflow)¶
We follow Gitflow:
main ─────●────────●────────●──────── (production releases)
│ ↑ ↑
│ │ │
develop ──●────●───●────●───●──────── (integration branch)
│ │
│ └── feature/new-pattern
└── feature/llm-output
| Branch | Purpose |
|---|---|
main | Production-ready code, tagged releases |
develop | Integration branch for features |
feature/* | New features (branch from develop) |
hotfix/* | Urgent fixes (branch from main) |
release/* | Release preparation (optional) |
Feature Development¶
# Start a feature
git checkout develop
git checkout -b feature/my-feature
# Work on feature...
git commit -m "feat: add feature"
# Merge back to develop (via PR)
git checkout develop
git merge feature/my-feature
Release Flow¶
# Prepare release from develop
git checkout main
git merge develop
git tag -a v0.2.0 -m "Release v0.2.0"
git push origin main v0.2.0
# Sync develop with main
git checkout develop
git merge main
Overview¶
Releases are fully automated via GitHub Actions when a tag is pushed.
Creating a Release¶
# 1. Ensure you're on main with latest changes
git checkout main
git pull origin main
# 2. Verify tests pass
uv run pytest tests/ -v
uv run mypy src/
uv run ruff check src/
# 3. Create annotated tag
git tag -a v0.2.0 -m "Release v0.2.0: Brief description"
# 4. Push tag (triggers automation)
git push origin v0.2.0
What Happens Automatically¶
When a tag is pushed:
- ✅ Tests run on multiple Python versions
- ✅ Package built with version from tag
- ✅ Published to PyPI
- ✅ GitHub Release created
- ✅ Documentation deployed
Version Format¶
Follow Semantic Versioning:
| Version | When to Use |
|---|---|
v0.1.1 | Bug fixes only |
v0.2.0 | New features (backward compatible) |
v1.0.0 | Breaking changes |
v0.2.0-rc1 | Pre-release (TestPyPI only) |
Pre-release Testing¶
Test on TestPyPI before stable release:
This publishes to TestPyPI only.
Hotfix Process¶
For urgent fixes:
git checkout main
git commit -m "fix: critical issue"
git tag -a v0.1.1 -m "Hotfix: Fix description"
git push origin main v0.1.1
Commit Messages¶
Use Conventional Commits:
feat: add new redaction pattern
fix: handle empty traceback
docs: update CLI reference
test: add property tests