| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2015 The Chromium Authors. All rights reserved. | 2 # Copyright 2015 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 # Prepare release script. | 6 # Prepare release script. |
| 7 # | 7 # |
| 8 # 1) Bump versions: | 8 # 1) Bump versions using sky/tools/roll_versions.py |
| 9 # sky/sdk/example/demo_launcher/apk/AndroidManifest.xml | 9 # 2) Add any additional information to touched CHANGELOG.md files. |
| 10 # mojo/dart/mojo_services/pubspec.yaml | 10 # 3) Add any release_notes/version.txt files for updated apks. |
| 11 # mojo/dart/mojom/pubspec.yaml | 11 # 4) Make a commit, upload it, land it. |
| 12 # mojo/public/dart/pubspec.yaml | 12 # 5) Run this script. |
| 13 # sky/sdk/pubspec.yaml | 13 # 6) Publish updated apks using sky/tools/publish_apk.py |
| 14 # | |
| 15 # 2) Update change logs: | |
| 16 # mojo/dart/mojo_services/CHANGELOG.md | |
| 17 # mojo/dart/mojom/CHANGELOG.md | |
| 18 # mojo/public/dart/CHANGELOG.md | |
| 19 # sky/sdk/CHANGELOG.md | |
| 20 # | |
| 21 # 3) Make a commit, upload it, land it. | |
| 22 # | |
| 23 # 4) Run this script. | |
| 24 # | |
| 25 | 14 |
| 26 import argparse | 15 import argparse |
| 27 import os | 16 import os |
| 28 import subprocess | 17 import subprocess |
| 29 import sys | 18 import sys |
| 30 import distutils.util | 19 import distutils.util |
| 31 | 20 |
| 21 |
| 32 DEFAULT_MOJO_ROOT = '/src/mojo/src' | 22 DEFAULT_MOJO_ROOT = '/src/mojo/src' |
| 33 DEFAULT_SKY_SDK_ROOT = '/src/sky_sdk' | 23 DEFAULT_SKY_SDK_ROOT = '/src/sky_sdk' |
| 34 DEFAULT_DEMO_SITE_ROOT = '/src/domokit.github.io' | 24 DEFAULT_DEMO_SITE_ROOT = '/src/domokit.github.io' |
| 35 CONFIRM_MESSAGE = """This tool is destructive and will revert your current branc
h to | 25 CONFIRM_MESSAGE = """This tool is destructive and will revert your current branc
h to |
| 36 origin/master among other things. Are you sure you wish to continue?""" | 26 origin/master among other things. Are you sure you wish to continue?""" |
| 27 DRY_RUN = False |
| 37 | 28 |
| 38 | 29 |
| 39 def run(cwd, args): | 30 def run(cwd, args): |
| 40 print 'RUNNING:', ' '.join(args), 'IN:', cwd | 31 print 'RUNNING:', ' '.join(args), 'IN:', cwd |
| 32 if DRY_RUN: |
| 33 return |
| 41 subprocess.check_call(args, cwd=cwd) | 34 subprocess.check_call(args, cwd=cwd) |
| 42 | 35 |
| 43 | 36 |
| 44 def confirm(prompt): | 37 def confirm(prompt): |
| 45 user_input = raw_input("%s (y/N) " % prompt) | 38 user_input = raw_input("%s (y/N) " % prompt) |
| 46 try: | 39 try: |
| 47 return distutils.util.strtobool(user_input) == 1 | 40 return distutils.util.strtobool(user_input) == 1 |
| 48 except ValueError: | 41 except ValueError: |
| 49 return False | 42 return False |
| 50 | 43 |
| 51 | 44 |
| 45 def publish_packages(pub_path, packages_root): |
| 46 for package in os.listdir(packages_root): |
| 47 package_path = os.path.join(packages_root, package) |
| 48 if not os.path.isdir(package_path): |
| 49 continue |
| 50 run(package_path, [pub_path, 'publish', '--force']) |
| 51 |
| 52 |
| 52 def main(): | 53 def main(): |
| 53 parser = argparse.ArgumentParser(description='Deploy!') | 54 parser = argparse.ArgumentParser(description='Deploy!') |
| 54 parser.add_argument('--mojo-root', | 55 parser.add_argument('--mojo-root', help='Path to mojo/src', |
| 55 action='store', | 56 default=DEFAULT_MOJO_ROOT) |
| 56 type=str, | 57 parser.add_argument('--sky-sdk-root', help='Path to sky_sdk', |
| 57 metavar='mojo_root', | 58 default=DEFAULT_SKY_SDK_ROOT) |
| 58 help='Path to mojo/src', | 59 parser.add_argument('--demo-site-root', help='Path to domokit.github.io', |
| 59 default=DEFAULT_MOJO_ROOT) | 60 default=DEFAULT_DEMO_SITE_ROOT) |
| 60 parser.add_argument('--sky-sdk-root', | 61 parser.add_argument('--dry-run', action='store_true', default=False, |
| 61 action='store', | 62 help='Just print commands w/o executing.') |
| 62 type=str, | 63 parser.add_argument('--no-pub-publish', dest='publish', |
| 63 metavar='sky_sdk_root', | 64 action='store_false', default=True, help='Skip pub publish step.') |
| 64 help='Path to sky_sdk', | |
| 65 default=DEFAULT_SKY_SDK_ROOT) | |
| 66 parser.add_argument('--demo-site-root', | |
| 67 action='store', | |
| 68 type=str, | |
| 69 metavar='demo_site_root', | |
| 70 help='Path to domokit.github.io', | |
| 71 default=DEFAULT_DEMO_SITE_ROOT) | |
| 72 args = parser.parse_args() | 65 args = parser.parse_args() |
| 73 | 66 |
| 74 if not confirm(CONFIRM_MESSAGE): | 67 global DRY_RUN |
| 68 DRY_RUN = args.dry_run |
| 69 |
| 70 if not args.dry_run and not confirm(CONFIRM_MESSAGE): |
| 75 print "Aborted." | 71 print "Aborted." |
| 76 return 1 | 72 return 1 |
| 77 | 73 |
| 78 mojo_root = os.path.abspath(os.path.expanduser(args.mojo_root)) | 74 mojo_root = os.path.abspath(os.path.expanduser(args.mojo_root)) |
| 79 sky_sdk_root = os.path.abspath(os.path.expanduser(args.sky_sdk_root)) | 75 sky_sdk_root = os.path.abspath(os.path.expanduser(args.sky_sdk_root)) |
| 80 demo_site_root = os.path.abspath(os.path.expanduser(args.demo_site_root)) | 76 demo_site_root = os.path.abspath(os.path.expanduser(args.demo_site_root)) |
| 81 | 77 |
| 82 # Derived paths: | 78 # Derived paths: |
| 83 dart_sdk_root = os.path.join(mojo_root, 'third_party/dart-sdk/dart-sdk') | 79 dart_sdk_root = os.path.join(mojo_root, 'third_party/dart-sdk/dart-sdk') |
| 84 pub_path = os.path.join(dart_sdk_root, 'bin/pub') | 80 pub_path = os.path.join(dart_sdk_root, 'bin/pub') |
| (...skipping 13 matching lines...) Expand all Loading... |
| 98 '--commit', | 94 '--commit', |
| 99 sky_sdk_root | 95 sky_sdk_root |
| 100 ]) | 96 ]) |
| 101 # tag for version? | 97 # tag for version? |
| 102 | 98 |
| 103 run(demo_site_root, ['git', 'fetch']) | 99 run(demo_site_root, ['git', 'fetch']) |
| 104 run(demo_site_root, ['git', 'reset', '--hard', 'origin/master']) | 100 run(demo_site_root, ['git', 'reset', '--hard', 'origin/master']) |
| 105 run(mojo_root, ['mojo/tools/deploy_domokit_site.py', demo_site_root]) | 101 run(mojo_root, ['mojo/tools/deploy_domokit_site.py', demo_site_root]) |
| 106 # tag for version? | 102 # tag for version? |
| 107 | 103 |
| 108 for package in os.listdir(packages_root): | 104 if args.publish: |
| 109 package_path = os.path.join(packages_root, package) | 105 publish_packages(pub_path, packages_root) |
| 110 if not os.path.isdir(package_path): | |
| 111 continue | |
| 112 run(package_path, [pub_path, 'publish', '--force']) | |
| 113 | 106 |
| 114 run(sky_sdk_root, ['git', 'push']) | 107 run(sky_sdk_root, ['git', 'push']) |
| 115 run(demo_site_root, ['git', 'push']) | 108 run(demo_site_root, ['git', 'push']) |
| 116 | 109 |
| 117 | 110 |
| 118 if __name__ == '__main__': | 111 if __name__ == '__main__': |
| 119 sys.exit(main()) | 112 sys.exit(main()) |
| OLD | NEW |