Spinning a new release¶
Tests¶
We use three continuous integration platforms: Travis, Appveyor, and ReadTheDocs. We also publish to Anaconda Cloud. Temporary build artifacts get published to Bintray.
Make sure that the
cytoflow
tests pass, both locally and on Travis and Appveyor:nose2 -c packaging/nose2.cfg -s cytoflow/tests
Make sure the
cytoflowgui
tests pass. You must do this locally; it runs too long for the free CI platforms.nose2 -c packaging/nose2.cfg -s cytoflowgui/tests
Make sure that the ReadTheDocs build is working.
Make sure that the
pyinstaller
distribution will build on your local machine. We are currently building with a custom version of PyIntaller that’s included as a submodule in packaging/pyinstallerpyinstaller packaging/pyinstaller.spec
Make sure that the expected files (installers, conda packages, wheels, built extensions) are getting published to Bintray. Remember – a failed deployment doesn’t show up on the CI platforms as a broken build!
Make sure that
pyinstaller
built the executables on all three supported platforms. Download and test that all three start and can run a basic workflow.
Documentation¶
Build the API docs and check them for completeness:
python3 setup.py build_sphinx
Build the online docs and check them for completeness:
python3 setup.py build_sphinx -b embedded_help
Versioning and dependencies¶
We’re using
versioneer
to manage versions. No manual versions required.If there are dependencies that don’t have packages on Anaconda, add recipes to
packaging/conda_recipes
(usingconda skeleton
) and upload them to the Anaconda Cloud. Unless there’s a really (really!) good reason, please make them no-arch.Make sure
install_requires
insetup.py
matchesrequirements.txt
Update the README.rst from the README.md. From the project root, say:
pandoc --from=markdown --to=rst --output=README.rst README.md
Push the updated docs to GitHub. Give the CI builders ~30 minutes, then check the build status on Travis, Appveyor, ReadTheDocs and Anaconda Cloud.
Create a new tag on the master branch. This will re-build everything on the CI builders, create a new release on GitHub, and upload new source and wheels to PyPI and packages to Anaconda Cloud.
Double-check that the required files ended up on Bintray.
On branch
gh-pages
, update the version in_config.yml
. Push these changes to update the main download links on http://bpteague.github.io/cytoflowDownload the wheels from Bintray or Github and add them to PyPI. TODO - use
twine
to release to PyPI from CI builders.