You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The 0.6.0 cycle surfaced several non-obvious steps that aren't documented anywhere. This issue tracks writing a doc/dev/release-process.md that a maintainer can follow end-to-end.
Related prior art: #517, v0.5.2rc1 release, PRs #561 and #562.
What the doc should cover:
Policy
Always cut an RC first to validate the full pipeline before the final release
RC goes to PyPI as a pre-release; Zenodo skips pre-releases
Branch and version bump
Create a branch (e.g. utensil/X.Y.Z-rc1), bump _version.py to X.Y.ZrcN (PEP 440) — the version must exactly match the tag that will be pushed (see the 0.5.1 incident in Release 0.5.2 #517)
After RC validates, create a second branch for the final bump: X.Y.ZrcN → X.Y.Z
Changelog
The :release: marker in doc/changelog.rst uses semantic_version internally — PEP 440 RC suffixes like 0.6.0rc1 are invalid semver and will break the RTD build. Omit the marker for RCs; add it only for the final release.
test/.nbval_sanitize.cfg version regex must match all suffix patterns (e.g. rc\d+|-dev) — validate this before tagging
The 0.6.0 cycle surfaced several non-obvious steps that aren't documented anywhere. This issue tracks writing a
doc/dev/release-process.mdthat a maintainer can follow end-to-end.Related prior art: #517, v0.5.2rc1 release, PRs #561 and #562.
What the doc should cover:
Policy
Branch and version bump
utensil/X.Y.Z-rc1), bump_version.pytoX.Y.ZrcN(PEP 440) — the version must exactly match the tag that will be pushed (see the 0.5.1 incident in Release 0.5.2 #517)X.Y.ZrcN→X.Y.ZChangelog
:release:marker indoc/changelog.rstusessemantic_versioninternally — PEP 440 RC suffixes like0.6.0rc1are invalid semver and will break the RTD build. Omit the marker for RCs; add it only for the final release.test/.nbval_sanitize.cfgversion regex must match all suffix patterns (e.g.rc\d+|-dev) — validate this before taggingCreating the release
gh release create vX.Y.ZrcN --prerelease --title "vX.Y.ZrcN" --notes "..."gh release create vX.Y.Z --title "vX.Y.Z" --notes "..."Create release and send to PyPIjob triggers on the tag automaticallyPost-release checks