Home | History | Annotate | Download | only in recipes
      1 # Copyright 2017 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 
      6 """Recipe for the Bot that updates meta config."""
      7 
      8 
      9 DEPS = [
     10   'depot_tools/gclient',
     11   'recipe_engine/context',
     12   'recipe_engine/file',
     13   'recipe_engine/path',
     14   'recipe_engine/properties',
     15   'recipe_engine/python',
     16   'recipe_engine/raw_io',
     17   'recipe_engine/step',
     18   'core',
     19   'infra',
     20   'run',
     21   'vars',
     22 ]
     23 
     24 
     25 TEST_BUILDERS = {
     26   'client.skia.compile': {
     27     'skiabot-linux-swarm-000': [
     28       'Housekeeper-Nightly-UpdateMetaConfig',
     29     ],
     30   },
     31 }
     32 
     33 
     34 UPDATE_META_CONFIG_GITCOOKIES_FILE = 'update_meta_config.git_cookies'
     35 UPDATE_META_CONFIG_KEY = 'update_meta_config_git_cookies'
     36 
     37 
     38 def RunSteps(api):
     39   api.core.setup()
     40 
     41   if api.vars.is_trybot:
     42     raise Exception('Cannot run update_meta_config recipe as a trybot')
     43   update_meta_config_gitcookies = api.path.join(
     44       api.path.expanduser('~'), UPDATE_META_CONFIG_GITCOOKIES_FILE)
     45   repo_name = api.properties.get('repository').split('/')[-1].rstrip('.git')
     46   cmd = ['python',
     47          api.vars.skia_dir.join('infra', 'bots', 'update_meta_config.py'),
     48          '--repo_name', repo_name,
     49          '--tasks_json', api.vars.skia_dir.join('infra', 'bots', 'tasks.json'),
     50          '--gitcookies', str(update_meta_config_gitcookies)]
     51   with api.infra.MetadataFetch(
     52       api, UPDATE_META_CONFIG_KEY, UPDATE_META_CONFIG_GITCOOKIES_FILE):
     53     with api.context(cwd=api.vars.skia_dir):
     54       api.run(api.step, 'Update meta/config', cmd=cmd)
     55 
     56 
     57 def GenTests(api):
     58   builder = 'Housekeeper-Nightly-UpdateMetaConfig'
     59   yield (
     60       api.test(builder) +
     61       api.properties(buildername=builder,
     62                      repository='https://skia.googlesource.com/skia.git',
     63                      revision='abc123',
     64                      path_config='kitchen',
     65                      swarm_out_dir='[SWARM_OUT_DIR]')
     66   )
     67 
     68   yield (
     69       api.test('failed_update') +
     70       api.properties(buildername=builder,
     71                      repository='https://skia.googlesource.com/skia.git',
     72                      revision='abc123',
     73                      path_config='kitchen',
     74                      swarm_out_dir='[SWARM_OUT_DIR]') +
     75       api.step_data('Update meta/config', retcode=1)
     76   )
     77 
     78   yield (
     79       api.test('trybot_test') +
     80       api.properties(buildername=builder,
     81                      repository='https://skia.googlesource.com/skia.git',
     82                      revision='abc123',
     83                      path_config='kitchen',
     84                      swarm_out_dir='[SWARM_OUT_DIR]',
     85                      patch_issue=123,
     86                      patch_set=3) +
     87       api.expect_exception('Exception')
     88   )
     89