Files
cellxgene/docs/release_process.md
2018-11-09 16:58:01 -08:00

49 lines
2.1 KiB
Markdown

# cellxgene release process
_This document defines the release process for cellxgene_
## Overview
The goal of the release process is to publish an installable package
to PyPi, with a matching tagged release on github.
The release process should result in the following side-effects:
- Version number bump, using semantic versioning
- JS assets built & packaged, committed to the repo
- Tagged github release
- Publication to PyPi
## Process
Follow these steps to create a release.
1. Preparation:
- Define the release version number, using [semantic versioning](https://semver.org/)
- Write the release title and release notes
2. Create a release branch, eg, `release-version`
3. In the release branch:
- run `bumpversion --config-file .bumpversion.cfg [major | minor | patch]`
- build the JS asserts using `bin/build-client`
4. Commit and push the new branch
5. Create a PR for the release.
- [optional] As needed, conduct PR review.
6. Create Github release using the version number and release notes ([instructions](https://help.github.com/articles/creating-releases/)).
7. Publish to pypi by performing the following steps
(assumes you have `setuptools` and `twine` installed and that you have
registered for pypi and have write access to the cellxgene pypi package)
- build the distribution by calling
`python setup.py sdist`
inside the top-level directory
- [optional] upload the package to test pypi
`twine upload --repository-url https://test.pypi.org/legacy/ dist/*`
- [optional] test the test installation in a fresh virtual environment using
`pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple cellxgene`
- upload the package to real pypi using `twine upload dist/*`
- [optional] test the installation in a fresh virtual environment using
`pip install cellxgene`
The optional steps are for testing purposes, and are recommended
for publishing any major releases, and any releases that significantly
change the packaging (e.g. new bundled files, new dependencies, etc.)