Add documentation about release versioning and process

This commit is contained in:
Ian Cordasco 2016-06-20 20:53:47 -05:00
parent 6ac4d16522
commit b67d1d633e
No known key found for this signature in database
GPG key ID: 656D3395E4A9791A
2 changed files with 44 additions and 0 deletions

View file

@ -17,6 +17,7 @@ pull gently.
contributing
writing-documentation
releases
checker
cli
formatters

View file

@ -0,0 +1,43 @@
==================
Releasing Flake8
==================
There is not much that is hard to find about how |Flake8| is released.
- We use **major** releases (e.g., 2.0.0, 3.0.0, etc.) for big releases (e.g.,
large scale refactors). This can also contain dependency version changes.
- We use **minor** releases (e.g., 2.1.0, 2.2.0, 3.1.0, 3.2.0, etc.) for
releases that contain features and dependency version changes.
- We use **patch** releases (e.g., 2.1.1, 2.1.2, 3.0.1, 3.0.10, etc.) for
releases that contain *only* bug fixes. These *never* contain changes to
dependency version constraints.
Process
=======
To prepare a release, we create a file in :file:`docs/source/releases/` named:
``{{ release_number }}.rst`` (e.g., ``3.0.0.rst``). We note bug fixes,
improvements, and dependency version changes as well as other items of note
for users.
Before releasing, the following tox test environments must pass:
- Python 2.7 (a.k.a., ``tox -e py27``)
- Python 3.4 (a.k.a., ``tox -e py34``)
- Python 3.5 (a.k.a., ``tox -e py35``)
- PyPy (a.k.a., ``tox -e pypy``)
- Linters (a.k.a., ``tox -e linters``)
We tag the most recent commit that passes those items and contains our release
notes.
Finally, we run ``tox -e release`` to build source distributions (e.g.,
``flake8-3.0.0.tar.gz``), universal wheels, and upload them to PyPI with
Twine.