##// 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 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>`_ (``twine upload
178 dist/*``) manually to actually upload on PyPI. Unlike setuptools, twine is able
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