Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 # Copyright 2016 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 wrapper used in SwarmBucket. | |
| 7 | |
| 8 | |
| 9 DEPS = [ | |
| 10 'build/file', | |
| 11 'depot_tools/bot_update', | |
| 12 'depot_tools/gclient', | |
| 13 'recipe_engine/json', | |
| 14 'recipe_engine/path', | |
| 15 'recipe_engine/properties', | |
| 16 'recipe_engine/python', | |
| 17 'recipe_engine/step', | |
| 18 ] | |
| 19 | |
| 20 | |
| 21 def checkout_steps(api): | |
|
rmistry
2016/07/28 17:41:48
Can we add a bunch of documentation and line break
borenet
2016/07/28 17:46:00
Done. Honestly, I'm not sure what most of the opti
| |
| 22 """Run the steps to obtain a checkout of Skia.""" | |
| 23 workdir = api.path['b'].join('work') | |
| 24 if not api.path.exists(workdir): | |
| 25 api.file.makedirs('workdir', workdir, infra_step=True) | |
| 26 cache_dir = api.path['b'].join('cache') | |
| 27 api.gclient.use_mirror = True | |
| 28 gclient_cfg = api.gclient.make_config(GIT_MODE=True, CACHE_DIR=cache_dir) | |
| 29 soln = gclient_cfg.solutions.add() | |
| 30 soln.name = 'skia' | |
| 31 soln.url = 'https://skia.googlesource.com/skia.git' | |
| 32 soln.revision = api.properties.get('revision', 'origin/master') | |
| 33 api.gclient.c = gclient_cfg | |
| 34 api.gclient.c.got_revision_mapping['skia'] = 'got_revision' | |
| 35 patch = api.properties.get('patch', True) | |
| 36 clobber = True if api.properties.get('clobber') else False | |
| 37 force = True if api.properties.get('force') else False | |
| 38 no_shallow = True if api.properties.get('no_shallow') else False | |
| 39 output_manifest = api.properties.get('output_manifest', False) | |
| 40 with_branch_heads = api.properties.get('with_branch_heads', False) | |
| 41 refs = api.properties.get('refs', []) | |
| 42 oauth2 = api.properties.get('oauth2', False) | |
| 43 root_solution_revision = api.properties.get('root_solution_revision') | |
| 44 suffix = api.properties.get('suffix') | |
| 45 gerrit_no_reset = True if api.properties.get('gerrit_no_reset') else False | |
| 46 api.bot_update.ensure_checkout(force=force, | |
| 47 no_shallow=no_shallow, | |
| 48 patch=patch, | |
| 49 with_branch_heads=with_branch_heads, | |
| 50 output_manifest=output_manifest, | |
| 51 refs=refs, patch_oauth2=oauth2, | |
| 52 clobber=clobber, | |
| 53 root_solution_revision=root_solution_revision, | |
| 54 suffix=suffix, | |
| 55 gerrit_no_reset=gerrit_no_reset, | |
| 56 cwd=workdir) | |
| 57 got_revision = api.step.active_result.presentation.properties['got_revision'] | |
| 58 if soln.revision != 'origin/master': # pragma: no cover | |
| 59 assert got_revision == soln.revision | |
| 60 return got_revision | |
| 61 | |
| 62 | |
| 63 def forward_to_recipe_in_repo(api): | |
| 64 workdir = api.path['b'].join('work') | |
| 65 recipes_py = workdir.join('skia', 'infra', 'bots', 'recipes.py') | |
| 66 cmd = ['python', recipes_py, 'run', | |
| 67 '--workdir', workdir, | |
| 68 'swarm_trigger', 'path_config=kitchen'] | |
| 69 for k, v in api.properties.iteritems(): | |
| 70 cmd.append('%s=%s' % (k, v)) | |
| 71 api.step('run recipe', cmd=cmd, allow_subannotations=True) | |
| 72 | |
| 73 | |
| 74 def print_properties(api): | |
| 75 """Dump out all properties for debugging purposes.""" | |
| 76 props = {} | |
| 77 for k, v in api.properties.iteritems(): | |
| 78 props[k] = v | |
| 79 api.python.inline( | |
| 80 'print properties', | |
| 81 ''' | |
| 82 import json | |
| 83 import sys | |
| 84 | |
| 85 with open(sys.argv[1]) as f: | |
| 86 content = json.load(f) | |
| 87 | |
| 88 print json.dumps(content, indent=2) | |
| 89 ''', | |
| 90 args=[api.json.input(props)]) | |
| 91 | |
| 92 | |
| 93 def RunSteps(api): | |
| 94 api.path.c.base_paths['b'] = ('/', 'b') | |
| 95 | |
| 96 # TODO(borenet): Remove this once SwarmBucket is working. | |
| 97 print_properties(api) | |
| 98 | |
| 99 checkout_steps(api) | |
| 100 forward_to_recipe_in_repo(api) | |
| 101 | |
| 102 | |
| 103 def GenTests(api): | |
| 104 yield ( | |
| 105 api.test('trigger_recipe') + | |
| 106 api.properties(buildername='Some-Builder', | |
| 107 buildnumber=5, | |
| 108 mastername='client.skia.fyi', | |
| 109 slavename='some-slave', | |
| 110 path_config='swarmbucket') | |
| 111 ) | |
| OLD | NEW |