| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- Release Process
- ~~~~~~~~~~~~~~~
- 1. Increment version number in ``cloudbridge/__init__.py`` as per
- `semver rules <https://semver.org/>_.
- 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.
- In general, our strategy is to make provider sdk libraries fixed within
- relatively known compatibility ranges, so that we reduce the chances of
- breakage. If someone uses cloudbridge, presumably, they do not use the sdks
- directly. For all other libraries, especially, general purpose libraries
- (e.g. six), our strategy is to make compatibility as broad and unrestricted
- as possible.
- 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 <last release hash>..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.
|