This document captures the release workflow used for this repository.
Before tagging, make sure the version is updated consistently:
pyproject.tomlsrc/cryosieve/__init__.py
Check that the release should be cut from the intended commit and that the working tree is in the expected state.
Useful commands:
git status --short
git log --oneline --decorate -5
git rev-parse HEADgit tag -l "vX.Y.Z"
git ls-remote --tags origin "vX.Y.Z"
gh release view "vX.Y.Z" --repo mxhulab/cryosieveIf needed:
brew install gh
gh auth login
gh auth statusTag the intended commit, then push it:
git tag "vX.Y.Z" <commit>
git push origin "vX.Y.Z"If the release should point at the current HEAD, use that commit explicitly or tag HEAD after verifying it is correct.
This repository publishes to PyPI from .github/workflows/pippublish.yml, and that workflow is triggered by the GitHub release.published event.
That means:
- pushing the tag is not enough
- the GitHub Release must also be created/published
Example:
gh release create "vX.Y.Z" \
--repo mxhulab/cryosieve \
--title "vX.Y.Z" \
--generate-notesDo not leave the release notes as a raw auto-generated engineering changelog.
Preferred tone for this repository:
- user-facing
- cryo-EM / paper-adjacent
- focused on practical impact
Emphasize:
- what users will notice
- installation or environment updates
- runtime / workflow improvements
- downstream analysis changes
- compatibility notes when results may differ slightly from older versions
After publishing:
- open the GitHub release page
- confirm the title, tag, and notes are correct
- confirm the PyPI publish workflow has started or completed
Useful commands:
gh release view "vX.Y.Z" --repo mxhulab/cryosieve
gh run list --repo mxhulab/cryosieve --workflow pippublish.yml