Release Process¶
This document describes how to release a new version of aiomas.
Preparations¶
Close all tickets for the next version.
Update the minium required versions of dependencies in
setup.py
. Update the exact version of all entries inrequirements.txt
.Run tox from the project root. All tests for all supported versions must pass:
$ tox [...] ________ summary ________ py34: commands succeeded py35: commands succeeded docs: commands succeeded flake8: commands succeeded congratulations :)
Build the docs (HTML is enough). Make sure there are no errors and undefined references.
$ cd docs/; make clean html; cd ..
Check if all authors are listed in
AUTHORS.rst
.Update the change logs (
CHANGES.rst
anddocs/development/changelog.rst
). Only keep changes for the current major release inCHANGES.rst
and reference the history page from there.Commit all changes:
$ hg ci -m 'Updated change log for the upcoming release.'
Update the version number in
setup.py
,docs/conf.py
, andsrc/aiomas/__init__.py
. Commit:$ hg ci -m 'Bump version from x.y.z to a.b.c'
Warning
Do not yet tag and push the changes so that you can safely do a rollback if one of the next step fails and you need change something!
Write a draft for the announcement mail with a list of changes, acknowledgements and installation instructions.
Build and release¶
Test the release process. Build a source distribution and a wheel package and test them:
$ python setup.py sdist bdist_wheel $ ls dist/ aiomas-a.b.c-py2.py3-none-any.whl aiomas-a.b.c.tar.gz
Test if the packages can be installed:
$ ./test_release.sh a.b.c Checking packages for aiomas==a.b.c [...] Source distribution looks okay. [...] Wheel package looks okay.
Create or check your accounts for the test server <https://testpypi.python.org/pypi> and PyPI. Update your
~/.pypirc
with your current credentials:[distutils] index-servers = pypi test [pypi] repository = https://pypi.python.org/pypi username = <your production user name goes here> password = <your production password goes here> [test] repository = https://testpypi.python.org/pypi username = <your test user name goes here> password = <your test password goes here>
Upload the distributions for the new version to the test server and test the installation again:
$ twine upload -r test dist/aiomas*a.b.c* $ pip install -i https://testpypi.python.org/pypi aiomas[mpb]
Check if the package is displayed correctly: https://testpypi.python.org/pypi/aiomas
Finally upload the package to PyPI and test its installation one last time:
$ twine upload -r pypi dist/aiomas*a.b.c* $ pip install -U aiomas[mpb]
Check if the package is displayed correctly: https://pypi.python.org/pypi/aiomas