Show More
@@ -8,7 +8,15 b' This document contains the process that is used to create an IPython release.' | |||
|
8 | 8 | |
|
9 | 9 | Conveniently, the ``release`` script in the ``tools`` directory of the ``IPython`` |
|
10 | 10 | repository automates most of the release process. This document serves as a |
|
11 | handy reminder and checklist for the release manager. | |
|
11 | handy reminder and checklist for the release manager. | |
|
12 | ||
|
13 | During the release process, you might need the extra following dependencies: | |
|
14 | ||
|
15 | - ``keyring`` to access your GitHub authentication tokens | |
|
16 | - ``testpath`` to fake some file system operations | |
|
17 | - ``graphviz`` to generate some graphs in the documentation | |
|
18 | ||
|
19 | ||
|
12 | 20 |
|
|
13 | 21 | 1. Set Environment variables |
|
14 | 22 | ---------------------------- |
@@ -72,6 +80,9 b' If a major release:' | |||
|
72 | 80 | file you just created and remove temporarily the first entry called |
|
73 | 81 | ``development`` (you'll need to add it back after release). |
|
74 | 82 | |
|
83 | Make sure that the stats file have a header or it won't be rendered in | |
|
84 | the final documentation. | |
|
85 | ||
|
75 | 86 | To find duplicates and update `.mailmap`, use:: |
|
76 | 87 | |
|
77 | 88 | git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f |
@@ -174,9 +185,11 b' Use the following to actually upload the result of the build::' | |||
|
174 | 185 | |
|
175 | 186 | It should posts them to ``archive.ipython.org``. |
|
176 | 187 | |
|
177 |
You will need to use `twine <https://github.com/pypa/twine>`_ |
|
|
178 |
|
|
|
179 | to upload packages over SSL. | |
|
188 | You will need to use `twine <https://github.com/pypa/twine>`_ ) manually to | |
|
189 | actually upload on PyPI. Unlike setuptools, twine is able to upload packages | |
|
190 | over SSL. | |
|
191 | ||
|
192 | twine upload dist/* | |
|
180 | 193 | |
|
181 | 194 | |
|
182 | 195 | PyPI/Warehouse will automatically hide previous releases. If you are uploading |
@@ -216,6 +229,13 b' The IPython website should document the new release:' | |||
|
216 | 229 | - update current version and download links |
|
217 | 230 | - update links on the documentation page (especially if a major release) |
|
218 | 231 | |
|
232 | 12. Update readthedocs | |
|
233 | ---------------------- | |
|
234 | ||
|
235 | Make sure to update readthedocs and set the latest tag as stable, as well as | |
|
236 | checked that previous release is still building under its own tag. | |
|
237 | ||
|
238 | ||
|
219 | 239 | 12. Celebrate! |
|
220 | 240 | -------------- |
|
221 | 241 |
@@ -45,44 +45,45 b' print()' | |||
|
45 | 45 | |
|
46 | 46 | # Perform local backup, go to tools dir to run it. |
|
47 | 47 | cd(tooldir) |
|
48 | sh('./make_tarball.py') | |
|
49 | sh('mv ipython-*.tgz %s' % ipbackupdir) | |
|
50 | 48 | |
|
51 | # Build release files | |
|
52 | sh('./build_release %s' % ipdir) | |
|
49 | if 'upload' in sys.argv: | |
|
50 | cd(distdir) | |
|
51 | print( 'Uploading distribution files to GitHub...') | |
|
53 | 52 | |
|
54 | # Not Registering with PyPI, registering with setup.py is insecure as communication is not encrypted | |
|
55 | cd(ipdir) | |
|
53 | for fname in os.listdir('.'): | |
|
54 | # TODO: update to GitHub releases API | |
|
55 | continue | |
|
56 | print('uploading %s to GitHub' % fname) | |
|
57 | desc = "IPython %s source distribution" % version | |
|
58 | post_download("ipython/ipython", fname, description=desc) | |
|
56 | 59 | |
|
57 | # Upload all files | |
|
58 | sh(sdists) | |
|
60 | # Make target dir if it doesn't exist | |
|
61 | print('Uploading IPython to backup site.') | |
|
62 | sh('ssh %s "mkdir -p %s/release/%s" ' % (archive_user, archive_dir, version)) | |
|
63 | sh('scp * %s' % release_site) | |
|
59 | 64 | |
|
60 | buildwheels() | |
|
65 | print( 'Uploading backup files...') | |
|
66 | cd(ipbackupdir) | |
|
67 | sh('scp `ls -1tr *tgz | tail -1` %s' % backup_site) | |
|
61 | 68 | |
|
62 | if 'upload' not in sys.argv: | |
|
63 | print("`./release upload` to register and release") | |
|
64 | sys.exit(0) | |
|
69 | print('Done!') | |
|
70 | print('Use `twine upload dist/*` to upload the files to PyPI') | |
|
71 | else: | |
|
72 | sh('./make_tarball.py') | |
|
73 | sh('mv ipython-*.tgz %s' % ipbackupdir) | |
|
65 | 74 | |
|
75 | # Build release files | |
|
76 | sh('./build_release %s' % ipdir) | |
|
66 | 77 | |
|
67 | print('Will not upload with setuptools as upload connection is insecure. Please use `twine upload dist/*` to upload the files to PyPI') | |
|
78 | # Not Registering with PyPI, registering with setup.py is insecure as communication is not encrypted | |
|
79 | cd(ipdir) | |
|
68 | 80 | |
|
69 | cd(distdir) | |
|
70 | print( 'Uploading distribution files to GitHub...') | |
|
81 | # Upload all files | |
|
82 | sh(sdists) | |
|
71 | 83 | |
|
72 | for fname in os.listdir('.'): | |
|
73 | # TODO: update to GitHub releases API | |
|
74 | continue | |
|
75 | print('uploading %s to GitHub' % fname) | |
|
76 | desc = "IPython %s source distribution" % version | |
|
77 | post_download("ipython/ipython", fname, description=desc) | |
|
84 | buildwheels() | |
|
85 | print("`./release upload` to upload source distribution on github and ipython archive") | |
|
86 | sys.exit(0) | |
|
78 | 87 | |
|
79 | # Make target dir if it doesn't exist | |
|
80 | print('Uploading IPython to backup site.') | |
|
81 | sh('ssh %s "mkdir -p %s/release/%s" ' % (archive_user, archive_dir, version)) | |
|
82 | sh('scp * %s' % release_site) | |
|
83 | 88 | |
|
84 | print( 'Uploading backup files...') | |
|
85 | cd(ipbackupdir) | |
|
86 | sh('scp `ls -1tr *tgz | tail -1` %s' % backup_site) | |
|
87 | 89 | |
|
88 | print('Done!') |
General Comments 0
You need to be logged in to leave comments.
Login now