Release Process¶
Versioning¶
Provero follows Semantic Versioning: MAJOR.MINOR.PATCH.
Pre-1.0 releases may include breaking changes in minor versions.
Branch Strategy¶
| Branch | Purpose |
|---|---|
main |
Active development |
release/v0.x |
Stable release branch, receives backports |
How to Release¶
-
Create a release branch from
main: -
Generate the changelog:
This consumes all news fragments and updatesCHANGELOG.md. -
Bump the version in
provero-core/pyproject.tomlandprovero-airflow/pyproject.toml. -
Commit and tag:
-
Create a GitHub Release from the tag. This triggers the
Publish to PyPIworkflow automatically. -
Merge changelog back to main:
Backports¶
To backport a fix to a release branch:
- Merge the fix to
mainfirst - Add the label
backport-to-release/v0.xto the PR - The backport workflow will create a cherry-pick PR automatically
- If the cherry-pick conflicts, resolve manually
Constraint Files¶
Each release branch has constraint files in constraints/ that pin exact dependency versions per Python version. These are generated automatically by CI and ensure reproducible installs.
News Fragments¶
Every PR must include a news fragment in newsfragments/. See CONTRIBUTING.md for details.
PyPI Publishing¶
Publishing uses trusted publishers (OIDC). No manual tokens needed. The Publish to PyPI workflow runs automatically when a GitHub Release is created.