mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
With this change, each time sky_viewer.mojo is uploaded to Google Storage (both for Linux and Android), debugging symbols are also uploaded in a symbols/ subdirectory.
140 lines
4.5 KiB
Python
Executable File
140 lines
4.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# Copyright 2015 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# See https://github.com/domokit/sky_engine/wiki/Release-process
|
|
|
|
import argparse
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
import distutils.util
|
|
|
|
|
|
CONFIRM_MESSAGE = """This tool is destructive and will revert your current branch to
|
|
upstream/master among other things. Are you sure you wish to continue?"""
|
|
DRY_RUN = False
|
|
|
|
|
|
def run(cwd, args):
|
|
print 'RUNNING:', ' '.join(args), 'IN:', cwd
|
|
if DRY_RUN:
|
|
return
|
|
subprocess.check_call(args, cwd=cwd)
|
|
|
|
|
|
def confirm(prompt):
|
|
user_input = raw_input("%s (y/N) " % prompt)
|
|
try:
|
|
return distutils.util.strtobool(user_input) == 1
|
|
except ValueError:
|
|
return False
|
|
|
|
|
|
def git_revision(cwd):
|
|
return subprocess.check_output([
|
|
'git', 'rev-parse', 'HEAD',
|
|
], cwd=cwd).strip()
|
|
|
|
|
|
class Artifact(object):
|
|
def __init__(self, category, name):
|
|
self.category = category
|
|
self.name = name
|
|
|
|
|
|
GS_URL = 'gs://mojo/sky/%(category)s/%(config)s/%(commit_hash)s/%(name)s'
|
|
|
|
|
|
ARTIFACTS = {
|
|
'android-arm': [
|
|
Artifact('shell', 'SkyShell.apk'),
|
|
Artifact('viewer', 'sky_viewer.mojo'),
|
|
Artifact('viewer', 'libsky_viewer_library.so'),
|
|
],
|
|
'linux-x64': [
|
|
Artifact('shell', 'icudtl.dat'),
|
|
Artifact('shell', 'sky_shell'),
|
|
Artifact('shell', 'sky_snapshot'),
|
|
Artifact('viewer', 'sky_viewer.mojo'),
|
|
Artifact('viewer', 'libsky_viewer_library.so'),
|
|
]
|
|
}
|
|
|
|
|
|
def upload_artifacts(dist_root, config, commit_hash):
|
|
for artifact in ARTIFACTS[config]:
|
|
src = os.path.join(artifact.category, artifact.name)
|
|
dst = GS_URL % {
|
|
'category': artifact.category,
|
|
'config': config,
|
|
'commit_hash': commit_hash,
|
|
'name': artifact.name,
|
|
}
|
|
z = ','.join([ 'mojo', 'dat' ])
|
|
run(dist_root, ['gsutil', 'cp', '-z', z, src, dst])
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description='Deploy!')
|
|
parser.add_argument('sky_engine_root', help='Path to sky_engine/src')
|
|
parser.add_argument('--stage-two', action='store_true', default=False,
|
|
help='Publish the sky package')
|
|
parser.add_argument('--dry-run', action='store_true', default=False,
|
|
help='Just print commands w/o executing.')
|
|
parser.add_argument('--no-pub-publish', dest='publish',
|
|
action='store_false', default=True, help='Skip pub publish step.')
|
|
args = parser.parse_args()
|
|
|
|
global DRY_RUN
|
|
DRY_RUN = args.dry_run
|
|
|
|
if not args.dry_run and not confirm(CONFIRM_MESSAGE):
|
|
print "Aborted."
|
|
return 1
|
|
|
|
sky_engine_root = os.path.abspath(os.path.expanduser(args.sky_engine_root))
|
|
|
|
# Derived paths:
|
|
dart_sdk_root = os.path.join(sky_engine_root, 'third_party/dart-sdk/dart-sdk')
|
|
pub_path = os.path.join(dart_sdk_root, 'bin/pub')
|
|
android_dist_root = os.path.join(sky_engine_root, 'out/android_Release/dist')
|
|
linux_dist_root = os.path.join(sky_engine_root, 'out/Release/dist')
|
|
sky_package_root = os.path.join(sky_engine_root, 'sky/packages/sky')
|
|
sky_engine_package_root = os.path.join(android_dist_root, 'packages/sky_engine/sky_engine')
|
|
sky_services_package_root = os.path.join(android_dist_root, 'packages/sky_services/sky_services')
|
|
sky_engine_revision_file = os.path.join(sky_engine_package_root, 'lib', 'REVISION')
|
|
|
|
run(sky_engine_root, ['git', 'fetch', 'upstream'])
|
|
run(sky_engine_root, ['git', 'reset', 'upstream/master', '--hard'])
|
|
run(sky_engine_root, ['gclient', 'sync'])
|
|
|
|
commit_hash = git_revision(sky_engine_root)
|
|
|
|
run(sky_engine_root, ['sky/tools/gn', '--android', '--release'])
|
|
run(sky_engine_root, ['ninja', '-C', 'out/android_Release', ':dist'])
|
|
|
|
run(sky_engine_root, ['sky/tools/gn', '--release'])
|
|
run(sky_engine_root, ['ninja', '-C', 'out/Release', ':dist'])
|
|
|
|
run(sky_engine_root, ['cp', 'AUTHORS', 'LICENSE', sky_package_root])
|
|
|
|
with open(sky_engine_revision_file, 'w') as stream:
|
|
stream.write(commit_hash)
|
|
|
|
if not args.stage_two:
|
|
upload_artifacts(android_dist_root, 'android-arm', commit_hash)
|
|
upload_artifacts(linux_dist_root, 'linux-x64', commit_hash)
|
|
|
|
if args.publish:
|
|
if args.stage_two:
|
|
run(sky_package_root, [pub_path, 'publish', '--force'])
|
|
else:
|
|
run(sky_engine_package_root, [pub_path, 'publish', '--force'])
|
|
run(sky_services_package_root, [pub_path, 'publish', '--force'])
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|