| Index: editor/build/promote.py
|
| diff --git a/editor/build/promote.py b/editor/build/promote.py
|
| index 72121ce7064303d60f3eb0a9d1180da27ff47fd8..d6951da2de8a0deb854a32e7e18c162b8c3bbcaa 100644
|
| --- a/editor/build/promote.py
|
| +++ b/editor/build/promote.py
|
| @@ -119,6 +119,22 @@ def main():
|
| print 'You must specify a --revision to specify which revision to promote'
|
| parser.print_help()
|
| sys.exit(3)
|
| +
|
| + # Make sure revision is a valid integer
|
| + try:
|
| + _ = int(options.revision)
|
| + except:
|
| + print 'You must supply a valid integer argument to --revision to promote'
|
| + parser.print_help()
|
| + sys.exit(3)
|
| +
|
| + # Make sure options.channel is a valid channel if given
|
| + if options.channel:
|
| + if options.channel not in bot_utils.Channel.ALL_CHANNELS:
|
| + print 'You must supply a valid channel to --channel to promote'
|
| + parser.print_help()
|
| + sys.exit(3)
|
| +
|
| if not (options.continuous or options.integration or
|
| options.testing or options.trunk or options.internal or
|
| options.channel):
|
| @@ -289,6 +305,18 @@ def _PromoteDartArchiveBuild(channel, revision):
|
| release_namer = bot_utils.GCSNamer(channel, bot_utils.ReleaseType.RELEASE)
|
|
|
| def promote(to_revision):
|
| + def safety_check_on_gs_path(gs_path, revision, channel):
|
| + if not ((revision == 'latest' or int(revision) > 0)
|
| + and len(channel) > 0
|
| + and ('%s' % revision) in gs_path
|
| + and channel in gs_path):
|
| + raise Exception(
|
| + "InternalError: Sanity check failed on GS URI: %s" % gs_path)
|
| +
|
| + def remove_gs_directory(gs_path):
|
| + safety_check_on_gs_path(gs_path, to_revision, channel)
|
| + _Gsutil(['-m', 'rm', '-R', '-f', gs_path])
|
| +
|
| # Copy VERSION file.
|
| from_loc = raw_namer.version_filepath(revision)
|
| to_loc = release_namer.version_filepath(to_revision)
|
| @@ -297,24 +325,29 @@ def _PromoteDartArchiveBuild(channel, revision):
|
| # Copy sdk directory.
|
| from_loc = raw_namer.sdk_directory(revision)
|
| to_loc = release_namer.sdk_directory(to_revision)
|
| + remove_gs_directory(to_loc)
|
| _Gsutil(['-m', 'cp', '-a', 'public-read', '-R', from_loc, to_loc])
|
|
|
| # Copy eclipse update directory.
|
| from_loc = raw_namer.editor_eclipse_update_directory(revision)
|
| to_loc = release_namer.editor_eclipse_update_directory(to_revision)
|
| + remove_gs_directory(to_loc)
|
| _Gsutil(['-m', 'cp', '-a', 'public-read', '-R', from_loc, to_loc])
|
|
|
| - # Copy api-docs directory.
|
| - from_loc = raw_namer.apidocs_directory(revision)
|
| - to_loc = release_namer.apidocs_directory(to_revision)
|
| - _Gsutil(['-m', 'cp', '-a', 'public-read', '-R', from_loc, to_loc])
|
| + # Copy api-docs zipfile.
|
| + from_loc = raw_namer.apidocs_zipfilepath(revision)
|
| + to_loc = release_namer.apidocs_zipfilepath(to_revision)
|
| + _Gsutil(['-m', 'cp', '-a', 'public-read', from_loc, to_loc])
|
|
|
| # Copy dartium directory.
|
| from_loc = raw_namer.dartium_directory(revision)
|
| to_loc = release_namer.dartium_directory(to_revision)
|
| + remove_gs_directory(to_loc)
|
| _Gsutil(['-m', 'cp', '-a', 'public-read', '-R', from_loc, to_loc])
|
|
|
| # Copy editor zip files.
|
| + target_editor_dir = release_namer.editor_directory(to_revision)
|
| + remove_gs_directory(target_editor_dir)
|
| for system in ['windows', 'macos', 'linux']:
|
| for arch in ['ia32', 'x64']:
|
| from_namer = raw_namer
|
|
|