-
Notifications
You must be signed in to change notification settings - Fork 2
HoloViz project release procedure
TODO: turn into checklist
TODO: combine with the various similar procedures we've had around the place
TODO: flesh out the steps
TODO: completely draft
Push dev tags:
$ git tag -a vX.Y.ZaN
$ git push --tagsto get packages on pyviz/label/dev until there's a satisfactory package. Or, if project is not on travis/you don't want to wait, you can build and test the package build locally, e.g.
Starting with a empty conda env and on a branch where all changes are committed:
# install pyctdev
$ conda install -c pyviz pyctdev && doit ecosystem=conda ecosystem_setup
# build pyct-core and run the 'build_examples' tests (defined in tox.ini) with python 3.6
$ doit ecosystem=conda package_build --recipe=core --test-python=py36 --test-group=build_examples -c pyviz
# build pyct and run the 'cmd_examples' tests (defined in tox.ini) with python 2.7
$ doit ecosystem=conda package_build --test-python=py27 --test-group=cmd_examples -c pyviz
Packages are tested automatically, but only by unit tests and running a limited set of the notebooks. Additionally, the uploaded packages are not yet tested on other platforms (even if the regular tests are run on other platforms; https://github.com/pyviz/pyct/issues/7).
Therefore, to determine if a package is satisfactory, some manual testing is required. Get the package, copy the examples, and download the data:
$ cd /scratch
# conda
$ conda create -n releasetest python=2.7
$ conda activate releasetest
$ conda install -c pyviz/label/dev datashader
$ datashader examples
# or pip
$ python -m venv ./releasetest
$ source ./releasetest/bin/activate
$ pip install --pre --upgrade --index-url=https://test.pypi.org/simple --extra-index-url=https://pypi.org/simple datashader
$ datashader examples
$ datashader --version # matches what you expect?
$ cd datashader-examples
Things to try:
-
conda/pip
install jupyter notebookand try out the notebooks -
try out the apps
-
Run all the notebooks (not just the limited set run during automated testing). Install
pytest flake8 nbsmoketo get the test dependencies, thenpytest --nbsmoke-run -k ".ipynb" --ignore-nbsmoke-skip-run -
Open and inspect the packages from https://test.pypi.org/project/datashader/ and https://anaconda.org/pyviz/datashader
The dev packages are built and tested using pyviz/label/dev. That means they get other pyviz/label/dev packages. The release packages are built and tested using pyviz. That means they get other pyviz packages (not dev). So you can imagine a dev package being fine, but a release package failing, because of dependencies.
Again, you can try locally if you prefer, e.g.
$ doit package_build --recipe=core -c pyviz --test-python=py27 --test-group=unit && doit package_build --recipe=recommended -c pyviz --test-python=py36 --test-group=examples
Once a release tag has been pushed, mature projects probably won't have to do anything for conda-forge. A PR will be opened automatically by conda-forge, and the package will be built, tested (but see https://github.com/pyviz/pyct/issues/25). Someone merge the PR to make it available.
Fast changing projects or those with tricky/many dependencies will likely need to update the c-f recipe. To do this, take the recipe from the pyviz package (not the templated version in the repository, but the rendered recipe in the package), and use it as reference for updating dependencies/pins etc.
Once on c-f, ? file issue for defaults to update their fork of c-f ?
NOTE: remove everything from examples/data prior to building
-
Ensure git repository is clear of unmerged/untracked files.
-
Ensure all tests pass.
-
Update meta.yaml and examples/environment.yml with best current recommended dependencies (often these float during development, but need to be pinned for releases).
-
Update version number in
conda.recipe/meta.yaml,datashader/__init__.py, andsetup.py. Commit. -
Tag commit and push to github
git tag -a x.x.x -m 'Version x.x.x'
git push origin master --tags- Build conda packages
The exact procedure is platform/setup specific, so I'll define a few variables here, to fill in with your specifics:
# Location of your conda install. For me it's `~/anaconda/`
CONDA_DIR=~/anaconda/
# Platform code. For me it's `osx-64`
PLATFORM=osx-64
# Version number of datashader being released (e.g. 0.2.0)
VERSION=0.2.0This assumes conda, conda-build, and anaconda-client are installed (if
not, install conda, then use conda to install the others). From inside the
toplevel directory:
conda config --append channels ioam
conda build conda.recipe/ --python 2.7
conda build conda.recipe/ --python 3.5
conda build conda.recipe/ --python 3.6Next, cd into the folder where the builds end up.
cd $CONDA_DIR/conda-bld/$PLATFORMUse conda convert to convert over the missing platforms (skipping the one for
the platform you're currently on):
conda convert --platform osx-64 datashader-$VERSION*.tar.bz2 -o ../
conda convert --platform linux-64 datashader-$VERSION*.tar.bz2 -o ../
conda convert --platform win-64 datashader-$VERSION*.tar.bz2 -o ../Use anaconda upload to upload the build to the bokeh channel. This requires
you to be setup on anaconda.org, and have the proper credentials to push to
the bokeh channel.
anaconda login
anaconda upload $CONDA_DIR/conda-bld/*/datashader-$VERSION*.tar.bz2 -u bokehIf you are uploading a dev release, then add the dev label.
anaconda upload $CONDA_DIR/conda-bld/*/datashader-$VERSION*.tar.bz2 -u bokeh -l dev- Write the release notes:
- Run
git logto get a listing of all the changes - Remove any covered in the previous release
- Summarize the rest to focus on user-visible changes and major new features
- Paste the notes into github, under n
releases, thenTags, thenEdit release notes.