Release Process
This document is only meant for the project administrators, not users and developers.
Create a release branch
release/XX
on GitHub.In the release branch:
Update the version numbers in
version.py
.Make sure that requirements.txt only has the actual dependencies that are needed to run SKLL. Any dependencies needed only for development/testing (e.g., sphinx, nose2 etc.) should be moved to requirements.dev. This means that requirements.txt must be a strict subset of requirements.dev.
Make sure the versions in doc/requirements.txt are up to date with requirements.txt and only contains the dependencies needed to build the documentation.
Make sure .readthedocs.yml is still accurate.
Update the conda recipe.
Update the documentation with any new features or details about changes.
Run
make linkcheck
on the documentation and fix any redirected/broken links.Update the README and this release documentation, if necessary.
Build and upload the conda packages by following instructions in
conda-recipe/README.md
.Build the PyPI source distribution using
python -m build
.Upload the source distribution to TestPyPI using
twine upload --repository testpypi dist/*
. You will need to have thetwine
package installed and set up your$HOME/.pypirc
correctly. See details here.Test the conda package by creating a new environment on different platforms with this package installed and then running SKLL examples or tests from a SKLL working copy. If the package works, then move on to the next step. If it doesn’t, figure out why and rebuild and re-upload the package.
Test the TestPyPI package by installing it as follows:
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple skll
Then run some SKLL examples or tests from a SKLL working copy. If the TestPyPI package works, then move on to the next step. If it doesn’t, figure out why and rebuild and re-upload the package.
Create pull requests on the skll-conda-tester and skll-pip-tester repositories to test the conda and TestPyPI packages on Linux and Windows.
Draft a release on GitHub while the Linux and Windows package tester builds are running.
Once both builds have passed, make a pull request with the release branch to be merged into
main
and request code review.Once the build for the PR passes and the reviewers approve, merge the release branch into
main
.Upload source and wheel packages to PyPI using
python setup.py sdist upload
andpython setup.py bdist_wheel upload
Make sure that the ReadTheDocs build for
main
passes.Tag the latest commit in
main
with the appropriate release tag and publish the release on GitHub.Send an email around at ETS announcing the release and the changes.
Post release announcement on Twitter/LinkedIn.