Our current policy for releasing is to aim for a bug-fix release every few weeks and a minor release every 2-3 months. The idea is to get fixes and new features out instead of trying to cram a ton of features into a release and by consequence taking a lot of time to make a new one.
Important
pytest releases must be prepared on Linux because the docs and examples expect to be executed on that platform.
To release a version MAJOR.MINOR.PATCH
, follow these steps:
- For major and minor releases, create a new branch
MAJOR.MINOR.x
from the latestmaster
and push it to thepytest-dev/pytest
repo. Create a branch
release-MAJOR.MINOR.PATCH
from theMAJOR.MINOR.x
branch.Ensure your are updated and in a clean working tree.
Using
tox
, generate docs, changelog, announcements:$ tox -e release -- MAJOR.MINOR.PATCH
This will generate a commit with all the changes ready for pushing.
- Open a PR for the
release-MAJOR.MINOR.PATCH
branch targetingMAJOR.MINOR.x
. After all tests pass and the PR has been approved, tag the release commit in the
MAJOR.MINOR.x
branch and push it. This will publish to PyPI:git tag MAJOR.MINOR.PATCH git push git@github.com:pytest-dev/pytest.git MAJOR.MINOR.PATCH
Wait for the deploy to complete, then make sure it is available on PyPI.
- Merge the PR.
Cherry-pick the CHANGELOG / announce files to the
master
branch:git fetch --all --prune git checkout origin/master -b cherry-pick-release git cherry-pick --no-commit -m1 origin/MAJOR.MINOR.x git checkout origin/master -- changelog git commit # no arguments
Send an email announcement with the contents from:
doc/en/announce/release-<VERSION>.rst
To the following mailing lists:
- pytest-dev@python.org (all releases)
- python-announce-list@python.org (all releases)
- testing-in-python@lists.idyll.org (only major/minor releases)
And announce it on Twitter with the
#pytest
hashtag.