HOW to release a version

In this section I will describe the procedure to make a release (create a new version of the code and publish it), and the management commands that we use for that (git, flit, etc).

Let us assume that we want to implement a new feature. Say that we are going to create a replacement for the ccs program. The following is an overview of the necessary steps to make the release:

  1. Create a feature branch:

    git flow feature start own-ccs
    
  2. (Hopefully not very) long cycles of double loop TDD to implement the feature (see Testing).

  3. When the feature is ready, ensure that the tests pass:

    tox
    
  4. Finish the branch:

    git flow feature finish own-ccs
    

    as a result you will land in the develop branch.

  5. Merge the new feature into master:

    git checkout master
    git merge develop
    
  6. Fix whatever is needed in the documentation. At the very minimum, think at least about these docs:

    • CHANGELOG.rst

    • docs/roadmap.rst

  7. Set the new version:

    bump2version "part"
    

    where part is one of: patch, minor or major. For instance:

    bump2version minor
    

    to increase the minor digit of the version. Versions are:

    major.minor.patch
    

    such that in, eg:

    1.0.2
    

    major is 1, minor is 0 and patch is 2.

  8. Upload the changes to the repo:

    git push
    

    this will trigger the pipelines in gitlab and update the docs in readthedocs.

  9. Publish the code in PyPI:

    flit publish
    
  10. Merge the changes into develop and keep working:

    git checkout develop
    git merge master
    

The above steps are only an minimal example. Probably a release is made of many features.