101b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry# Copyright 2017 The Chromium Authors. All rights reserved. 201b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry# Use of this source code is governed by a BSD-style license that can be 301b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry# found in the LICENSE file. 401b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 501b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 601b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry"""Recipe for the Bot that updates meta config.""" 701b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 801b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 901b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi MistryDEPS = [ 1001b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 'depot_tools/gclient', 1101b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 'recipe_engine/context', 123e2ffd74b57a917a4df8d64785a18cf79ff2aacdEric Boren 'recipe_engine/file', 1301b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 'recipe_engine/path', 1401b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 'recipe_engine/properties', 1501b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 'recipe_engine/python', 1601b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 'recipe_engine/raw_io', 1701b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 'recipe_engine/step', 1801b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 'core', 1901b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 'infra', 2001b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 'run', 2101b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 'vars', 2201b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry] 2301b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 2401b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 2501b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi MistryTEST_BUILDERS = { 2601b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 'client.skia.compile': { 2701b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 'skiabot-linux-swarm-000': [ 2801b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 'Housekeeper-Nightly-UpdateMetaConfig', 2901b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry ], 3001b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry }, 3101b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry} 3201b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 3301b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 3401b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi MistryUPDATE_META_CONFIG_GITCOOKIES_FILE = 'update_meta_config.git_cookies' 3501b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi MistryUPDATE_META_CONFIG_KEY = 'update_meta_config_git_cookies' 3601b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 3701b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 3801b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistrydef RunSteps(api): 3901b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry api.core.setup() 4001b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 4101b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry if api.vars.is_trybot: 4201b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry raise Exception('Cannot run update_meta_config recipe as a trybot') 4301b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry update_meta_config_gitcookies = api.path.join( 4401b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry api.path.expanduser('~'), UPDATE_META_CONFIG_GITCOOKIES_FILE) 4501b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry repo_name = api.properties.get('repository').split('/')[-1].rstrip('.git') 4601b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry cmd = ['python', 4701b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry api.vars.skia_dir.join('infra', 'bots', 'update_meta_config.py'), 4801b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry '--repo_name', repo_name, 4901b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry '--tasks_json', api.vars.skia_dir.join('infra', 'bots', 'tasks.json'), 5001b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry '--gitcookies', str(update_meta_config_gitcookies)] 5101b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry with api.infra.MetadataFetch( 5201b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry api, UPDATE_META_CONFIG_KEY, UPDATE_META_CONFIG_GITCOOKIES_FILE): 5301b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry with api.context(cwd=api.vars.skia_dir): 5401b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry api.run(api.step, 'Update meta/config', cmd=cmd) 5501b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 5601b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 5701b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistrydef GenTests(api): 5801b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry builder = 'Housekeeper-Nightly-UpdateMetaConfig' 5901b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry yield ( 6001b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry api.test(builder) + 6101b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry api.properties(buildername=builder, 6201b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry repository='https://skia.googlesource.com/skia.git', 6301b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry revision='abc123', 6401b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry path_config='kitchen', 6501b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry swarm_out_dir='[SWARM_OUT_DIR]') 6601b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry ) 6701b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 6801b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry yield ( 6901b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry api.test('failed_update') + 7001b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry api.properties(buildername=builder, 7101b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry repository='https://skia.googlesource.com/skia.git', 7201b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry revision='abc123', 7301b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry path_config='kitchen', 7401b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry swarm_out_dir='[SWARM_OUT_DIR]') + 7501b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry api.step_data('Update meta/config', retcode=1) 7601b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry ) 7701b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry 7801b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry yield ( 7901b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry api.test('trybot_test') + 8001b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry api.properties(buildername=builder, 8101b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry repository='https://skia.googlesource.com/skia.git', 8201b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry revision='abc123', 8301b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry path_config='kitchen', 8401b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry swarm_out_dir='[SWARM_OUT_DIR]', 8594df1841ec695e01ba22c475c011a0a531a20262Ravi Mistry patch_issue=123, 8694df1841ec695e01ba22c475c011a0a531a20262Ravi Mistry patch_set=3) + 8701b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry api.expect_exception('Exception') 8801b48e7f13c25af430b6c90aac8cefcd79c0d870Ravi Mistry ) 89