110 lines
3.7 KiB
ReStructuredText
110 lines
3.7 KiB
ReStructuredText
Maintainer / core-developer information
|
|
========================================
|
|
|
|
Before a release
|
|
----------------
|
|
|
|
1. Update authors table::
|
|
|
|
$ cd build_tools; make authors; cd ..
|
|
|
|
and commit.
|
|
|
|
Making a release
|
|
----------------
|
|
For more information see https://github.com/scikit-learn/scikit-learn/wiki/How-to-make-a-release
|
|
|
|
|
|
1. Update docs:
|
|
|
|
- Edit the doc/whats_new.rst file to add release title and commit
|
|
statistics. You can retrieve commit statistics with::
|
|
|
|
$ git shortlog -ns 0.998..
|
|
|
|
- Edit the doc/index.rst to change the 'News' entry of the front page.
|
|
|
|
2. Update the version number in sklearn/__init__.py, the __version__
|
|
variable
|
|
|
|
3. Create the tag and push it::
|
|
|
|
$ git tag 0.999
|
|
|
|
$ git push origin --tags
|
|
|
|
4. create the source tarball:
|
|
|
|
- Wipe clean your repo::
|
|
|
|
$ git clean -xfd
|
|
|
|
- Generate the tarball::
|
|
|
|
$ python setup.py sdist
|
|
|
|
The result should be in the `dist/` folder. We will upload it later
|
|
with the wheels. Check that you can install it in a new virtualenv and
|
|
that the tests pass.
|
|
|
|
5. Build binaries using dedicated CI servers by updating the git submodule
|
|
reference to the new scikit-learn tag of the release at:
|
|
|
|
https://github.com/MacPython/scikit-learn-wheels
|
|
|
|
Once the CI has completed successfully, collect the generated binary wheel
|
|
packages and upload them to PyPI by running the following commands in the
|
|
scikit-learn source folder (checked out at the release tag)::
|
|
|
|
$ pip install -U wheelhouse_uploader twine
|
|
$ python setup.py fetch_artifacts
|
|
|
|
Check the content of the `dist/` folder: it should contain all the wheels
|
|
along with the source tarball ("scikit-learn-XXX.tar.gz").
|
|
|
|
Make sure that you do not have developer versions or older versions of
|
|
the scikit-learn package in that folder.
|
|
|
|
Upload everything at once to https://pypi.org::
|
|
|
|
$ twine upload dist/
|
|
|
|
6. Push the documentation to the website. Circle CI should do this
|
|
automatically for master and <N>.<N>.X branches.
|
|
|
|
7. FOR FINAL RELEASE: Update the release date in What's New
|
|
|
|
The scikit-learn.org web site
|
|
-----------------------------
|
|
|
|
The scikit-learn web site (http://scikit-learn.org) is hosted at GitHub,
|
|
but should rarely be updated manually by pushing to the
|
|
https://github.com/scikit-learn/scikit-learn.github.io repository. Most
|
|
updates can be made by pushing to master (for /dev) or a release branch
|
|
like 0.99.X, from which Circle CI builds and uploads the documentation
|
|
automatically.
|
|
|
|
Travis Cron jobs
|
|
----------------
|
|
|
|
From `<https://docs.travis-ci.com/user/cron-jobs>`_: Travis CI cron jobs work
|
|
similarly to the cron utility, they run builds at regular scheduled intervals
|
|
independently of whether any commits were pushed to the repository. Cron jobs
|
|
always fetch the most recent commit on a particular branch and build the project
|
|
at that state. Cron jobs can run daily, weekly or monthly, which in practice
|
|
means up to an hour after the selected time span, and you cannot set them to run
|
|
at a specific time.
|
|
|
|
For scikit-learn, Cron jobs are used for builds that we do not want to run in
|
|
each PR. As an example the build with the dev versions of numpy and scipy is
|
|
run as a Cron job. Most of the time when this numpy-dev build fail, it is
|
|
related to a numpy change and not a scikit-learn one, so it would not make sense
|
|
to blame the PR author for the Travis failure.
|
|
|
|
The definition of what gets run in the Cron job is done in the .travis.yml
|
|
config file, exactly the same way as the other Travis jobs. We use a ``if: type
|
|
= cron`` filter in order for the build to be run only in Cron jobs.
|
|
|
|
The branch targeted by the Cron job and the frequency of the Cron job is set
|
|
via the web UI at https://www.travis-ci.org/scikit-learn/scikit-learn/settings.
|