release
89 lines
| 2.3 KiB
| text/plain
|
TextLexer
/ tools / release
Fernando Perez
|
r2118 | #!/usr/bin/env python | ||
"""IPython release script. | ||||
Ville M. Vainio
|
r1032 | |||
Fernando Perez
|
r4450 | This should ONLY be run at real release time. | ||
Fernando Perez
|
r2118 | """ | ||
Fernando Perez
|
r4450 | from __future__ import print_function | ||
Ville M. Vainio
|
r1032 | |||
Matthias Bussonnier
|
r22021 | import os | ||
import sys | ||||
Matthias Bussonnier
|
r22028 | from toollib import (get_ipdir, pjoin, cd, execfile, sh, archive, | ||
Matthias Bussonnier
|
r22043 | sdists, archive_user, archive_dir, buildwheels) | ||
MinRK
|
r8598 | from gh_api import post_download | ||
Fernando Perez
|
r2118 | |||
# Get main ipython dir, this will raise if it doesn't pass some checks | ||||
ipdir = get_ipdir() | ||||
Fernando Perez
|
r4450 | tooldir = pjoin(ipdir, 'tools') | ||
distdir = pjoin(ipdir, 'dist') | ||||
Fernando Perez
|
r3135 | # Where I keep static backups of each release | ||
ipbackupdir = os.path.expanduser('~/ipython/backup') | ||||
MinRK
|
r17581 | if not os.path.exists(ipbackupdir): | ||
os.makedirs(ipbackupdir) | ||||
Fernando Perez
|
r3135 | |||
# Start in main IPython dir | ||||
Fernando Perez
|
r2118 | cd(ipdir) | ||
# Load release info | ||||
Matthias Bussonnier
|
r22028 | version = None | ||
Min RK
|
r19847 | execfile(pjoin('IPython','core','release.py'), globals()) | ||
Fernando Perez
|
r2118 | |||
Fernando Perez
|
r4450 | # Build site addresses for file uploads | ||
release_site = '%s/release/%s' % (archive, version) | ||||
Fernando Perez
|
r4457 | backup_site = '%s/backup/' % archive | ||
Fernando Perez
|
r4450 | |||
# Start actual release process | ||||
print() | ||||
print('Releasing IPython') | ||||
print('=================') | ||||
print() | ||||
print('Version:', version) | ||||
print() | ||||
print('Source IPython directory:', ipdir) | ||||
print() | ||||
Ville M. Vainio
|
r1032 | |||
Fernando Perez
|
r3135 | # Perform local backup, go to tools dir to run it. | ||
cd(tooldir) | ||||
Ville M. Vainio
|
r1032 | |||
Matthias Bussonnier
|
r22714 | if 'upload' in sys.argv: | ||
cd(distdir) | ||||
print( 'Uploading distribution files to GitHub...') | ||||
Ville M. Vainio
|
r1032 | |||
Matthias Bussonnier
|
r22714 | for fname in os.listdir('.'): | ||
# TODO: update to GitHub releases API | ||||
continue | ||||
print('uploading %s to GitHub' % fname) | ||||
desc = "IPython %s source distribution" % version | ||||
post_download("ipython/ipython", fname, description=desc) | ||||
Ville M. Vainio
|
r1032 | |||
Matthias Bussonnier
|
r22714 | # Make target dir if it doesn't exist | ||
print('Uploading IPython to backup site.') | ||||
sh('ssh %s "mkdir -p %s/release/%s" ' % (archive_user, archive_dir, version)) | ||||
sh('scp * %s' % release_site) | ||||
Matthias Bussonnier
|
r22043 | |||
Matthias Bussonnier
|
r22714 | print( 'Uploading backup files...') | ||
cd(ipbackupdir) | ||||
sh('scp `ls -1tr *tgz | tail -1` %s' % backup_site) | ||||
Matthias Bussonnier
|
r22023 | |||
Matthias Bussonnier
|
r22714 | print('Done!') | ||
print('Use `twine upload dist/*` to upload the files to PyPI') | ||||
else: | ||||
sh('./make_tarball.py') | ||||
sh('mv ipython-*.tgz %s' % ipbackupdir) | ||||
Matthias Bussonnier
|
r22028 | |||
Matthias Bussonnier
|
r22714 | # Build release files | ||
sh('./build_release %s' % ipdir) | ||||
Matthias Bussonnier
|
r22028 | |||
Matthias Bussonnier
|
r22714 | # Not Registering with PyPI, registering with setup.py is insecure as communication is not encrypted | ||
cd(ipdir) | ||||
MinRK
|
r16795 | |||
Matthias Bussonnier
|
r22714 | # Upload all files | ||
sh(sdists) | ||||
Fernando Perez
|
r5791 | |||
Matthias Bussonnier
|
r22714 | buildwheels() | ||
print("`./release upload` to upload source distribution on github and ipython archive") | ||||
sys.exit(0) | ||||
MinRK
|
r8598 | |||
Ville M. Vainio
|
r1032 | |||