Release Process

This document describes how to release a new version of aiomas.

Preparations

  1. Close all tickets for the next version.

  2. Update the minium required versions of dependencies in setup.py. Update the exact version of all entries in requirements.txt.

  3. Make sure the pipeline passes.

    Additionaly, you should run tox. All tests must pass.

  4. Check if all authors are listed in AUTHORS.rst.

  5. Update the change logs (CHANGES.rst and docs/development/changelog.rst). Only keep changes for the current major release in CHANGES.rst and reference the history page from there.

  6. Commit all changes:

    $ git add -u
    $ git commit -m 'Updated change log for the upcoming release.'
    
  7. Update the version number in setup.py, docs/conf.py, and src/aiomas/__init__.py. Commit:

    $ git add -u
    $ git commit -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!

  8. Write a draft for the announcement mail with a list of changes, acknowledgements and installation instructions.

Build and release

  1. 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:

    $ ./release_test.sh a.b.c
    Checking packages for aiomas==a.b.c
    [...]
    Source distribution looks okay.
    [...]
    Wheel package looks okay.
    
  2. 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://upload.pypi.org/legacy/
    username = <your production user name goes here>
    
    [test]
    repository = https://test.pypi.org/legacy/
    username = <your test user name goes here>
    
  3. 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]
    
  4. Check if the package is displayed correctly: https://testpypi.python.org/pypi/aiomas

  5. 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]
    
  6. Check if the package is displayed correctly: https://pypi.python.org/pypi/aiomas

Post release

  1. Push your changes:

    $ git tag a.b.c
    $ git push origin master a.b.c
    
  2. Send the prepared email to the mailing list and post it on Twitter/Google+.

  3. Post something to Planet Python (e.g., via Stefan’s blog).