Release Management¶
Overview¶
We use towncrier to manage release notes, ensuring that every
modification receives proper categorization without merge conflicts.
The documentation page describes generating newsfragments.
The Release Workflow¶
We avoid automated CI-driven releases to PyPI. A maintainer must perform final checks locally before public distribution.
Building the Changelog¶
The final build aggregates all fragments into CHANGELOG.md. This command
identifies the version and date.
uvx towncrier build --version "v0.0.5"
Checklist¶
Update the version for the upcoming release in
pixie.g. for
0.0.5,pixi.tomlmust have0.0.6.devas the version.
Regenerate the lock file,
pixi lock
Atomic Commits and Tagging¶
The build process generates a single commit. This commit includes the updated changelog and the deletion of the processed fragments. Following this atomic commit, the maintainer applies a Git tag.
git tag -a v0.0.5 -m "Release v0.0.5"
git push origin main --tags
Distribution¶
After tagging, the maintainer builds the distribution packages and uploads them
to PyPI using twine via uvx.
uv build
uvx twine upload dist/*
GitHub releases¶
Finally draft a release on the web interface, automated changelog here works
fine, with a title like project vVersion.