85 lines
3.2 KiB
ReStructuredText
85 lines
3.2 KiB
ReStructuredText
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 <VERSION> <DEVPI USER> --password <DEVPI 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 <https://github.com/nicoddemus/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 <http://doc.devpi.net/latest/quickstart-releaseprocess.html?highlight=pypirc#devpi-push-releasing-to-an-external-index>`_.
|
|
|
|
#. Tag the release::
|
|
|
|
git tag VERSION <hash>
|
|
git push origin VERSION
|
|
|
|
Make sure ``<hash>`` 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**
|