1- This file contains a walkthrough of the NumPy 1.12.0 release on Fedora Linux.
1+ This file contains a walkthrough of the NumPy 1.14.3 release on Linux.
22The commands can be copied into the command line, but be sure to
3- replace 1.12.0 by the correct version.
3+ replace 1.14.3 by the correct version.
44
55Release Walkthrough
66====================
77
8- Building the release
9- --------------------
8+ Prepare the release commit
9+ --------------------------
1010
1111Checkout the branch for the release, make sure it is up to date, and clean the
1212repository::
@@ -16,44 +16,39 @@ repository::
1616 $ git submodule update
1717 $ git clean -xdf
1818
19- Look at the git log to get the hash of the last commit in the release, then
20- check it out::
21-
22- $ git log
23- $ git checkout 7849751173fb47a5f17761b3515b42b4d8ce1197
24-
2519Edit pavement.py and setup.py as detailed in HOWTO_RELEASE::
2620
2721 $ gvim pavement.py setup.py
28- $ git commit -a -m"REL: NumPy 1.14.1 release."
22+ $ git commit -a -m"REL: NumPy 1.14.3 release."
2923
3024Sanity check::
3125
3226 $ python runtests.py -m "full"
3327 $ python3 runtests.py -m "full"
3428
35- Tag it,and build the source distribution archives::
29+ Push this release directly onto the end of the maintenance branch. This
30+ requires write permission to the numpy repository::
3631
37- $ git tag -s v1.14.1
38- $ paver sdist # sdist will do a git clean -xdf, so we omit that
32+ $ git push upstream maintenance/1.14.x
3933
40- Check that the files in ``release/installers `` have the correct versions, then
41- push the tag upstream; generation of the wheels for PyPI needs it::
34+ As an example, see the 1.14.3 REL commit: `<https://github.com/numpy/numpy/commit/73299826729be58cec179b52c656adfcaefada93 >`_.
4235
43- $ git push upstream v1.14.1
36+ Build wheels
37+ ------------
4438
45- Trigger the wheels build. This can take a while. The numpy-wheels repository is
46- cloned from `< https://github.com/MacPython/ numpy-wheels>`_. Start with a pull
47- as the repo may have been accessed and changed by someone else and a push will
48- fail.
39+ Trigger the wheels build by pointing the numpy-wheels repository at this
40+ commit. This can take a while. The numpy-wheels repository is cloned from
41+ `< https://github.com/MacPython/numpy-wheels >`_. Start with a pull as the repo
42+ may have been accessed and changed by someone else and a push will fail::
4943
5044 $ cd ../numpy-wheels
5145 $ git pull origin master
5246 $ git branch <new version> # only when starting new numpy version
53- $ git checkout v1.14.x # v1.14.x already existed for the 1.14.1 release
47+ $ git checkout v1.14.x # v1.14.x already existed for the 1.14.3 release
5448
55- The ``.travis.yml `` and ``appveyor.yml `` files need to be edited to make
56- sure they have the correct version, search for ``BUILD_COMMIT ``.
49+ Edit the ``.travis.yml `` and ``appveyor.yml `` files to make sure they have the
50+ correct version, and put in the commit hash for the ``REL `` commit created
51+ above for ``BUILD_COMMIT ``. See `<https://github.com/MacPython/numpy-wheels/commit/fed9c04629c155e7804282eb803d81097244598d >`_ for an example::
5752
5853 $ gvim .travis.yml appveyor.yml
5954 $ git commit -a
@@ -66,7 +61,6 @@ and appveyor build status. Check if all the needed wheels have been built and
6661uploaded before proceeding. There should currently be 22 of them at
6762`<https://wheels.scipy.org >`_, 4 for Mac, 8 for Windows, and 10 for Linux.
6863
69-
7064Download wheels
7165---------------
7266
@@ -75,7 +69,7 @@ in the ``terryfy`` repository. The terryfy repository may be cloned from
7569`<https://github.com/MacPython/terryfy >`_ if you don't already have it. The
7670wheels can also be uploaded using the ``wheel-uploader ``, but we prefer to
7771download all the wheels to the ``../numpy/release/installers `` directory and
78- upload later using ``twine ``.
72+ upload later using ``twine ``::
7973
8074 $ cd ../terryfy
8175 $ git pull origin master
@@ -88,14 +82,56 @@ upload later using ``twine``.
8882If you do this often, consider making CDN_URL and NPY_WHLS part of your default
8983environment.
9084
85+ Tag the release
86+ ---------------
87+
88+ Once the wheels have been built and downloaded without errors, go back to your
89+ numpy repository in the maintenance branch and tag the ``REL `` commit, signing
90+ it with your gpg key, and build the source distribution archives::
91+
92+ $ git tag -s v1.14.3
93+ $ paver sdist # sdist will do a git clean -xdf, so we omit that
94+
95+ You should upload your public gpg key to github, so that the tag will appear
96+ "verified" there.
97+
98+ Check that the files in ``release/installers `` have the correct versions, then
99+ push the tag upstream::
100+
101+ $ git push upstream v1.14.3
102+
103+ We wait until this point to push the tag because it is very difficult to change
104+ the tag after it has been pushed.
105+
106+ Reset the maintenance branch into a development state
107+ -----------------------------------------------------
108+
109+ Add another ``REL `` commit to the numpy maintenance branch, which resets the
110+ ``ISREALEASED `` flag to ``False `` and increments the version counter::
111+
112+ $ gvim pavement.py setup.py
113+ $ git commit -a -m"REL: prepare 1.14.x for further development"
114+ $ git push upstream maintenance/1.14.x
115+
116+ This strategy is copied from the scipy release procedure and was used in numpy
117+ for the first time in 1.14.3. It needed to be modified a little since numpy
118+ has more strict requirements for the version number. It was acheived in two
119+ commits:
120+ `<https://github.com/numpy/numpy/commit/b8df705bdcce92d3e2c6f050eb4414192cf0df04 >`_
121+ `<https://github.com/numpy/numpy/commit/29e175269624493114f77cceff93486271f9efff >`_.
91122
92123Upload to PyPI
93124--------------
94125
95- Upload to PyPI using ``twine ``. The choice here is to sign the files, so will
96- need to sign every file separately when they are uploaded, keeping the gpg pass
97- phrase in the clipboard and pasting it in will make that easier. We may chose
98- to forgo the signing in the future::
126+ Upload to PyPI using ``twine ``.
127+
128+ In the past, we signed the wheels files, but after 1.14.3 wheels should no
129+ longer support or need signing. The instructions below still sign.
130+
131+ For the 1.14.3 release we signed every file when it was uploaded. On systems
132+ which do not cache the gpg passphrase for a few minutes, keeping the it in the
133+ clipboard and pasting it in will make that easier. We may chose to forgo the
134+ signing in the future::
99135
100136 $ cd ../numpy
101137 $ twine upload -s release/installers/*.whl
@@ -120,15 +156,15 @@ Generate the ``release/README`` files::
120156 $ rm release/installers/*.asc
121157 $ paver write_release_and_log
122158
123- Go to `<https://github.com/numpy/numpy/releases >`_, there should be a ``v1.14.1
159+ Go to `<https://github.com/numpy/numpy/releases >`_, there should be a ``v1.14.3
124160tag ``, click on it and hit the edit button for that tag. There are two ways to
125161add files, using an editable text window and as binary uploads.
126162
127163- Cut and paste the ``release/README.md `` file contents into the text window.
128- - Upload ``release/installers/numpy-1.12.0 .tar.gz `` as a binary file.
129- - Upload ``release/installers/numpy-1.12.0 .zip `` as a binary file.
164+ - Upload ``release/installers/numpy-1.14.3 .tar.gz `` as a binary file.
165+ - Upload ``release/installers/numpy-1.14.3 .zip `` as a binary file.
130166- Upload ``release/README `` as a binary file.
131- - Upload ``doc/changelog/1.14.1 -changelog.rst `` as a binary file.
167+ - Upload ``doc/changelog/1.14.3 -changelog.rst `` as a binary file.
132168- Check the pre-release button if this is a pre-releases.
133169- Hit the ``{Publish,Update} release `` button at the bottom.
134170
@@ -143,7 +179,7 @@ upload the documentation. Otherwise::
143179
144180 $ pushd doc
145181 $ make dist
146- $ make upload USERNAME=<yourname> RELEASE=v1.14.1
182+ $ make upload USERNAME=<yourname> RELEASE=v1.14.3
147183 $ popd
148184
149185If the release series is a new one, you will need to rebuild and upload the
@@ -164,7 +200,7 @@ This assumes that you have forked `<https://github.com/scipy/scipy.org>`_::
164200 $ cd ../scipy.org
165201 $ git checkout master
166202 $ git pull upstream master
167- $ git checkout -b numpy-1.14.1
203+ $ git checkout -b numpy-1.14.3
168204 $ gvim www/index.rst # edit the News section
169205 $ git commit -a
170206 $ git push origin HEAD
@@ -180,7 +216,7 @@ announcements for the basic template. The contributor list can be generated as
180216follows::
181217
182218 $ cd ../numpy
183- $ ./tools/changelog.py $GITHUB v1.14.0 ..v1.14.1 > tmp.rst
219+ $ ./tools/changelog.py $GITHUB v1.14.2 ..v1.14.3 > tmp.rst
184220
185221The contents of ``tmp.rst `` can then be cut and pasted into the announcement
186222email.
0 commit comments