1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Copyright 2014 The Chromium Authors. All rights reserved. 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Use of this source code is governed by a BSD-style license that can be 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# found in the LICENSE file. 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot"""Create a CL to update the SKP version.""" 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport argparse 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport os 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport subprocess 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport sys 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport urllib2 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport git_utils 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotSKIA_COMMITTER_EMAIL = 'update-skps@skia.org' 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotSKIA_COMMITTER_NAME = 'UpdateSKPs' 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotCOMMIT_MSG = '''Update SKP version 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotAutomatic commit by the RecreateSKPs bot. 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotTBR=%s 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotNO_MERGE_BUILDS 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot''' % SKIA_COMMITTER_EMAIL 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotSKIA_REPO = 'https://skia.googlesource.com/skia.git' 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef main(target_dir, gitcookies): 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot with git_utils.NewGitCheckout(repository=SKIA_REPO): 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot # First verify that there are no gen_tasks diffs. 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot gen_tasks = os.path.join(os.getcwd(), 'infra', 'bots', 'gen_tasks.go') 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot try: 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot subprocess.check_call(['go', 'run', gen_tasks, '--test']) 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot except subprocess.CalledProcessError as e: 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot print >> sys.stderr, ( 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 'gen_tasks.go failed, not uploading SKP update:\n\n%s' % e.output) 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot sys.exit(1) 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot # Skip GCE Auth in depot_tools/gerrit_utils.py. Use gitcookies instead. 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot os.environ['SKIP_GCE_AUTH_FOR_GIT'] = 'True' 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot os.environ['GIT_COOKIES_PATH'] = gitcookies 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot os.environ['USE_CIPD_GCE_AUTH'] = 'True' 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot # Upload the new version, land the update CL as the update-skps user. 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot config_dict = { 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 'user.name': SKIA_COMMITTER_NAME, 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 'user.email': SKIA_COMMITTER_EMAIL, 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 'http.cookiefile': gitcookies, 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot with git_utils.GitLocalConfig(config_dict): 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot with git_utils.GitBranch(branch_name='update_skp_version', 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot commit_msg=COMMIT_MSG, 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot commit_queue=True): 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot upload_script = os.path.join( 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot os.getcwd(), 'infra', 'bots', 'assets', 'skp', 'upload.py') 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot subprocess.check_call(['python', upload_script, '-t', target_dir]) 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot subprocess.check_call(['go', 'run', gen_tasks]) 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot subprocess.check_call([ 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 'git', 'add', os.path.join('infra', 'bots', 'tasks.json')]) 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotif '__main__' == __name__: 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot parser = argparse.ArgumentParser() 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot parser.add_argument("--target_dir") 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot parser.add_argument("--gitcookies") 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot args = parser.parse_args() 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot main(args.target_dir, args.gitcookies) 67