##// END OF EJS Templates
Update release process instruction....
Matthias Bussonnier -
Show More
@@ -8,7 +8,15 b' This document contains the process that is used to create an IPython release.'
8
8
9 Conveniently, the ``release`` script in the ``tools`` directory of the ``IPython``
9 Conveniently, the ``release`` script in the ``tools`` directory of the ``IPython``
10 repository automates most of the release process. This document serves as a
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 1. Set Environment variables
21 1. Set Environment variables
14 ----------------------------
22 ----------------------------
@@ -72,6 +80,9 b' If a major release:'
72 file you just created and remove temporarily the first entry called
80 file you just created and remove temporarily the first entry called
73 ``development`` (you'll need to add it back after release).
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 To find duplicates and update `.mailmap`, use::
86 To find duplicates and update `.mailmap`, use::
76
87
77 git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f
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 It should posts them to ``archive.ipython.org``.
186 It should posts them to ``archive.ipython.org``.
176
187
177 You will need to use `twine <https://github.com/pypa/twine>`_ (``twine upload
188 You will need to use `twine <https://github.com/pypa/twine>`_ ) manually to
178 dist/*``) manually to actually upload on PyPI. Unlike setuptools, twine is able
189 actually upload on PyPI. Unlike setuptools, twine is able to upload packages
179 to upload packages over SSL.
190 over SSL.
191
192 twine upload dist/*
180
193
181
194
182 PyPI/Warehouse will automatically hide previous releases. If you are uploading
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 - update current version and download links
229 - update current version and download links
217 - update links on the documentation page (especially if a major release)
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 12. Celebrate!
239 12. Celebrate!
220 --------------
240 --------------
221
241
@@ -45,44 +45,45 b' print()'
45
45
46 # Perform local backup, go to tools dir to run it.
46 # Perform local backup, go to tools dir to run it.
47 cd(tooldir)
47 cd(tooldir)
48 sh('./make_tarball.py')
49 sh('mv ipython-*.tgz %s' % ipbackupdir)
50
48
51 # Build release files
49 if 'upload' in sys.argv:
52 sh('./build_release %s' % ipdir)
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
53 for fname in os.listdir('.'):
55 cd(ipdir)
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
60 # Make target dir if it doesn't exist
58 sh(sdists)
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:
69 print('Done!')
63 print("`./release upload` to register and release")
70 print('Use `twine upload dist/*` to upload the files to PyPI')
64 sys.exit(0)
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)
81 # Upload all files
70 print( 'Uploading distribution files to GitHub...')
82 sh(sdists)
71
83
72 for fname in os.listdir('.'):
84 buildwheels()
73 # TODO: update to GitHub releases API
85 print("`./release upload` to upload source distribution on github and ipython archive")
74 continue
86 sys.exit(0)
75 print('uploading %s to GitHub' % fname)
76 desc = "IPython %s source distribution" % version
77 post_download("ipython/ipython", fname, description=desc)
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