Skip to content

Latest commit

 

History

History
57 lines (39 loc) · 1.66 KB

File metadata and controls

57 lines (39 loc) · 1.66 KB

Releasing

  1. Create release branch X.Y.Z from develop.
  2. Update VERSION in castle/version.py to the new version.
  3. Update CHANGELOG.rst for the impending release.
  4. git commit -am "release X.Y.Z" (where X.Y.Z is the new version).
  5. Push to GitHub, open a PR to develop, and merge when approved.
  6. On develop: run make test and make lint (or confirm CI is green).
  7. Pull latest develop, merge into master, and push ``master`` to ``origin``.
  8. Create a GitHub release from master with tag vX.Y.Z (see below).
  9. Publish to PyPI from master (see below). A GitHub release does not publish the package; PyPI is updated only via twine upload.

GitHub release

Create the release only after master on origin contains the release commit.

gh release create vX.Y.Z \
  --title "Release X.Y.Z" \
  --notes-file release-notes.md

Use --latest as a separate flag if you need to mark the release as Latest; do not put --latest in --title.

PyPI

From a clean checkout of master at the release commit:

git checkout master && git pull
rm -rf dist build
pip install build twine
python3 -m build
twine check dist/*
twine upload dist/*

README and metadata

When you change README.rst, validate that PyPI will accept it:

python3 -m build && twine check dist/*

PyPI ignores README.rst if it is not valid reStructuredText.

TestPyPI

twine upload --repository-url https://test.pypi.org/legacy/ dist/*