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