How to release pytest -------------------------------------------- .. important:: pytest releases must be prepared on **linux** because the docs and examples expect to be executed in that platform. #. Install development dependencies in a virtual environment with:: pip3 install -r tasks/requirements.txt #. Create a branch ``release-X.Y.Z`` with the version for the release. Make sure it is up to date with the latest ``master`` (for patch releases) and with the latest ``features`` merged with the latest ``master`` (for minor releases). Ensure your are in a clean work tree. #. Check and finalize ``CHANGELOG.rst`` (will be automated soon). #. Execute to automatically generate docs, announcements and upload a package to your ``devpi`` staging server:: invoke generate.pre_release --password If ``--password`` is not given, it is assumed the user is already logged in. If you don't have an account, please ask for one! #. Run from multiple machines:: devpi use https://devpi.net/USER/dev devpi test pytest==VERSION Alternatively, you can use `devpi-cloud-tester `_ to test the package on AppVeyor and Travis (follow instructions on the ``README``). #. Check that tests pass for relevant combinations with:: devpi list pytest or look at failures with "devpi list -f pytest". #. Feeling confident? Publish to pypi:: devpi push pytest==VERSION pypi:NAME where NAME is the name of pypi.python.org as configured in your ``~/.pypirc`` file `for devpi `_. #. Tag the release:: git tag VERSION git push origin VERSION Make sure ```` is **exactly** the git hash at the time the package was created. #. Send release announcement to mailing lists: - pytest-dev@python.org - python-announce-list@python.org - testing-in-python@lists.idyll.org (only for minor/major releases) And announce the release on Twitter, making sure to add the hashtag ``#pytest``. #. **After the release** a. **patch release (2.8.3)**: 1. Checkout ``master``. 2. Update version number in ``_pytest/__init__.py`` to ``"2.8.4.dev0"``. 3. Create a new section in ``CHANGELOG.rst`` titled ``2.8.4.dev0`` and add a few bullet points as placeholders for new entries. 4. Commit and push. b. **minor release (2.9.0)**: 1. Merge ``features`` into ``master``. 2. Checkout ``master``. 3. Follow the same steps for a **patch release** above, using the next patch release: ``2.9.1.dev0``. 4. Commit ``master``. 5. Checkout ``features`` and merge with ``master`` (should be a fast-forward at this point). 6. Update version number in ``_pytest/__init__.py`` to the next minor release: ``"2.10.0.dev0"``. 7. Create a new section in ``CHANGELOG.rst`` titled ``2.10.0.dev0``, above ``2.9.1.dev0``, and add a few bullet points as placeholders for new entries. 8. Commit ``features``. 9. Push ``master`` and ``features``. c. **major release (3.0.0)**: same steps as that of a **minor release**