
.. _RefReleaseProcess:

Release process
****************************************************************************

Preparation
============================================================================

#.  Version number and release branch

    #.  Determine the appropriate version number for this release,
        according to :ref:`RefReleaseVersioning`.
    #.  Update the :file:`version.txt` file to contain the new version
        number.

#.  Tickets

    #.  Update ticket status for this release, where relevant:
        https://github.com/dictation-toolbox/dragonfly/issues

#.  Release files

    #.  Verify that :file:`CHANGELOG.rst` includes the change log for this
        release.
    #.  Verify that :file:`AUTHORS.txt` is up to date with recent
        contributors.
    #.  Verify that :file:`setup.py` specifies all required
        dependencies, including their versions, e.g. with the
        ``install_requires`` and ``test_requires`` parameters.
    #.  Verify that :file:`documentation/requirements.txt` specifies all
        required dependencies for building the documentation.
    #.  Verify that :file:`MANIFEST.in` includes all necessary
        data files.

#.  Draft announcement

    #.  Write a draft announcement text to send to the mailing list after
        the release process has been completed.

Build and test
============================================================================

#.  Test building of documentation

#.  Build distributions

#.  Test installation of distributions

#.  Test on PyPI test server (`test.pypi.org <http://test.pypi.org/>`__)

    #.  Upload distributions to PyPI test server
    #.  Test installation from PyPI test server
    #.  Verify package is displayed correctly on PyPI test server

#.  Tag release

    #.  Tag git revision as ``X.Y.Z``
    #.  Push to GitHub

Release
============================================================================

#.  Upload to GitHub

    #.  Upload distributions to GitHub:
        https://github.com/dictation-toolbox/dragonfly/releases

#.  Trigger building of documentation on Read the Docs

    #.  Check whether documentation was built automatically, and if not
        trigger it:
        https://readthedocs.org/builds/dragonfly2/

#.  Upload to PyPI server

    #.  Upload distributions to PyPI server
    #.  Test installation from PyPI server
    #.  Verify package is displayed correctly on PyPI server

Post-release
============================================================================

#.  Announce release

    #.  Website
    #.  Mailing list
    #.  Gitter channel
