This document contains notes about the process that is used to release IPython. Our release process is currently not very formal and could be improved.
Most of the release process is automated by the
release script in the
directory of our main repository. This document is just a handy reminder for
the release manager.
You can set some env variables to note previous release tag and current release milestone, version, and git tag:
PREV_RELEASE=rel-1.0.0 MILESTONE=1.1 VERSION=1.1.0 TAG="rel-$VERSION" BRANCH=master
These will be used later if you want to copy/paste, or you can just type the appropriate command when the time comes. These variables are not used by scripts (hence no
If a major release:
merge any pull request notes into what's new:
docs/source/whatsnew/development.rst, to ensure it covers the major points.
generate summary of GitHub contributions, which can be done with:
python tools/github_stats.py --milestone $MILESTONE > stats.rst
which may need some manual cleanup. Add the cleaned up result and add it to
docs/source/whatsnew/github-stats-X.Y.rst (make a new file, or add it to the top, depending on whether it is a major release).
You can use:
git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f
This does all the file checking and building that the real release script will do. This will let you do test installations, check that the build procedure runs OK, etc. You may want to also do a test build of the docs.
IPython/core/release.py to have the current version, and then run
python setup.py jsversion
Commit the changes to release.py and jsversion:
git commit -am "release $VERSION" git push origin $BRANCH
Create and push the tag:
git tag -am "release $VERSION" "$TAG" git push origin --tags
Update release.py back to
x.y-maint, and push:
python setup.py jsversion git commit -am "back to development" git push origin $BRANCH
cd /tmp git clone --recursive --depth 1 https://github.com/ipython/ipython.git -b "$TAG"
cd tools && ./release
This makes the tarballs, zipfiles, and wheels. It posts them to archive.ipython.org and registers the release with PyPI.
This will require that you have current wheel, Python 3.4 and Python 2.7, and an appropriate version of LESS.
Make sure you have all the dependencies, otherwise parts of the API documentation can't be built. Sphinx should warn you if imports fail.
For this we are now using GitHub pages:
cd docs VERSION=[MAJOR_VERSION_ONLY] make gh-pages
stablesymlink to point to the released version.
git pushto update the public version of the docs on gh-pages.
This should include i) highlights and ii) a link to the html version of the What's new section of the documentation.
Post to mailing list, and link from Twitter.