How to make a release

Olivier Grisel edited this page Jul 13, 2017 · 54 revisions
Clone this wiki locally
  • Write the changelog (doc/whats_new.rst). Commit counts can be generated using git log <last_release>.. | git shortlog -s -n for sorting by commits or git log ..HEAD | git shortlog -s | cut -c 8- for sorting by names (and not showing commit counts)

  • Fix Milestone issues

  • Compile documentation, make sure all examples compile.

  • Run the tests from the last release to see that all deprecations have been taken care of.

  • Make sure that both travis and appveyor tests pass on master

  • Tag master with X.X-branching

  • Create a new branch X.X. Next step for both branches separately (once for master, once for the release branch)

  • Update the docs to build the new version of the stable website (final release only):

    • Change the version number hardcoded in web page: doc/documentation.rst, and change the links on doc/documentation.rst to "other versions".

    • Add the previous stable to doc/support.rst

    • Change the links inside the menu bar in doc/themes/scikit-learn/layout.html

    • Update the news on doc/index.rst.

  • Change the version number in sklearn/

  • Check on python 2.6, 2.7, 3.4, 3.5, 3.6

  • Tag X.X branch as X.X. (use 'git tag -a' to annotate the tag, it make downstream packager's life easier)

  • Trigger the build of the wheel packages for Linux, Windows and macOS by following the instructions of the readme of the MacPython/scikit-learn-wheels repo and check the results on travis at:

  • Fetch the build artifacts of the release:

    pip install wheelhouse-uploader
    python fetch_artifacts
  • clean the generated docs: cd doc && make clean to avoid including all the images generated for the HTML website in the source distribution (otherwise the generate archive is much to big).

  • then python sdist will create a .tar.gz in the dist/ directory.

  • untar and test it

  • Upload both the tarball and the wheel packages to PyPi with python upload_all (you might need to python register first)

  • hide the old version on the PyPi website

  • Update the mloss page: (right now, Fabian and Andy are the only ones that can do that).

  • remove all deprecated features from dev that are to be removed in the next version.

  • Update the wikipedia page with the latest stable version (should we?)