Skip to content
Eric Talevich edited this page May 29, 2020 · 8 revisions

Steps involved in issuing a new release of CNVkit.

Verify all tests pass

Unit tests should be passing on TravisCI. Locally run the same unit tests tests and the shell pipeline (which is not on TravisCI):

cd test/
make test
make all

Write release notes

  • Do git log <previous-version>...HEAD > changelog.txt to list all commit messages since the last release. Brew a cup of tea and edit these for human consumption (as Markdown). The commit messages mention relevant issue and pull request numbers; keep these, and check those conversations for details if anything is unclear. Thank all contributors by GitHub username.

  • Ensure the Sphinx documentation (doc/) includes all new changes. Use git grep to find all instances of specific commands/options/things. Update nearby documentation as needed.

  • Ensure dependency versions are correct and consistent between setup.py, .travis.yml, and devtools/conda-recipe/meta.yaml.

In cnvlib/_version.py, remove the .dev0 suffix from the version number

Commit.

Tag the last commit with the stable version number

Use the changelog as the commit message.

$ git tag <version> -aF <changelog.md>

Push, including tags.

$ git push --tags

Build a source-only Python package for PyPI

$ python setup.py build sdist
$ twine upload dist/CNVkit-<version>.tar.gz

(Ensure twine is at least version 1.8.0.)

Bump the version number in cnvlib/_version.py

To the next point release, plus the development suffix: <version +1>.dev0

Commit and push.

Update the Docker image

Edit docker/Dockerfile to specify the newly released stable version of CNVKit in the last RUN pip step.

Build the updated image:

$ sudo docker build -t etal/cnvkit:<version> .
$ sudo docker build -t etal/cnvkit:latest .

Verify that it launches:

$ sudo docker run -it etal/cnvkit:latest
root@...:/# cnvkit.py version
<version>

Push to Docker Hub:

$ sudo docker push etal/cnvkit:<version>
$ sudo docker push etal/cnvkit:latest

Commit and push the code to GitHub.