Release Process
~~~~~~~~~~~~~~~
1. Increment version number in ``cloudbridge/__init__.py`` as per
`semver rules _.
2. Freeze all library dependencies in ``setup.py``. The version numbers can be
a range with the upper limit being the latest known working version, and the
lowest being the last known working version.
3. Run all ``tox`` tests.
4. Add release notes to ``CHANGELOG.rst``. Also add last commit hash to
changelog. List of commits can be obtained using
``git shortlog ..HEAD``
5. Release to PyPi.
(make sure you have run `pip install wheel`)
First, test release with PyPI staging server as described in:
https://hynek.me/articles/sharing-your-labor-of-love-pypi-quick-and-dirty/
Once tested, run:
.. code-block:: bash
# remove stale files or wheel might package them
rm -r build dist
python setup.py sdist upload
python setup.py bdist_wheel upload
6. Tag release and make a GitHub release.
.. code-block:: bash
git tag -a v1.0.0 -m "Release 1.0.0"
git push --tags
7. Increment version number in ``cloudbridge/__init__.py`` to ``version-dev``
to indicate the development cycle, commit, and push the changes.