Release Process¶
Maintainers only
This guide is for repository maintainers with push access to the main branch.
Prerequisites¶
Before starting a release:
- All CI checks passing on
main -
mainbranch is stable - All changes committed and pushed
- You have push access to the repository
Release Types¶
| Type | Version Bump | Example | When to use |
|---|---|---|---|
| Patch | 0.1.X |
0.1.0 → 0.1.1 | Bug fixes only, fully backwards compatible |
| Minor | 0.X.0 |
0.1.0 → 0.2.0 | New features, backwards compatible |
| Major | X.0.0 |
0.9.0 → 1.0.0 | Breaking changes — requires migration guide |
Step-by-Step¶
1. Prepare¶
git checkout main
git pull origin main
just test && just check
2. Create the release¶
just release 0.2.0
This command:
- Runs all tests
- Generates
CHANGELOG.mdfrom conventional commits - Bumps version in all
pyproject.tomlfiles - Creates git commit + tag
v0.2.0
3. Review¶
git log --oneline -5 # verify commit
git tag | tail -1 # verify tag
4. Push¶
git push origin main
git push origin --tags
5. Publish GitHub Release¶
The .github/workflows/release.yml workflow detects the new tag and creates a draft release. Review and publish at github.com/nfb2021/canvodpy/releases.
6. Post-release¶
- Monitor issues for regressions
- Create a Zenodo snapshot for DOI (Zenodo Setup)
- Update citation information if needed
Troubleshooting¶
Tests fail during release
Fix the failing tests on main before retrying just release.
Version bump fails
Use an explicit X.Y.Z format (no v prefix):
just release 0.2.0 # correct
just release v0.2.0 # wrong
Tag already exists
git tag -d v0.2.0 # delete local tag
git push origin :v0.2.0 # delete remote tag (if already pushed)
just release 0.2.0 # recreate
Workflow did not trigger
Verify the tag matches the pattern v*.*.* at
github.com/nfb2021/canvodpy/actions.
Manual Release (Fallback)¶
just changelog v0.2.0
Then create a release manually at github.com/nfb2021/canvodpy/releases/new.