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 |