Publishing a release

This page describes the steps required to author a release of GWpy.

Notes:

  • gwpy uses the git flow branching model for releases
  • all release numbers must follow Semantic Versioning 2 and include major, minor, and patch numbers, e.g. 1.0.0 rather than 1.0 or just 1

Step-by-step

  1. Create a release branch using git flow

    $ git flow release start 1.0.0
    

    and then publish it, allowing CI to run, and others to contribute:

    $ git flow release publish 1.0.0
    
  2. Wait patiently for the continuous integration to finish

  3. Announce the release and ask for final contributions

  4. Finalise the release and push

    $ git flow release finish 1.0.0
    $ git push origin master
    $ git push origin --tags
    

    Note

    The git flow release finish command will open two prompts, one to merge the release branch into master, just leave that as is. The second prompt is the tag message, please complete this to include the release notes for this release.

  5. Draft a release on GitHub

  6. Publish the release documentation

    This is done from the LDAS computing centre at Caltech:

    $ cd /home/duncan.macleod/gwpy-nightly-build/
    $ bash release-build.sh 1.0.0
    

    Once that is complete (~20 minutes), a few manual updates must be made

    $ cd /home/duncan.macleod/gwpy-nightly-build/gwpy.github.io/docs
    $ unlink stable && ln -s 1.0.0 stable
    $ sed -i 's/0.9.9/1.0.0/g' index.html
    

    The final command should be modified to replace the previous release ID with the current one.

    Then:

    $ git commit --gpg-sign --message="1.0.0: release docs"
    $ git push  # <- this step needs an SSH key
    

    It should take ~5 minutes for the release documentation to actually appear on https://gwpy.github.io/docs/

Distributing the new release package

Package distributions for Debian, RHEL, and Macports, is still done manually:

Debian/RHEL

Macports

Linked updates

PyPI

Finishing the release and pushing the tags to origin will trigger a new CI run on https://travis-ci.org, which will automatically deploy the new release tarball to https://pypi.python.org and publish the release there.

Zenodo

Creating a new release on GitHub will automatically trigger a new DOI on https://zenodo.org.