OLD | NEW |
1 # Copyright 2016 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 | 5 |
6 # Recipe module for Skia Swarming trigger. | 6 # Recipe module for Skia Swarming trigger. |
7 | 7 |
8 | 8 |
9 import json | 9 import json |
10 | 10 |
11 | 11 |
12 DEPS = [ | 12 DEPS = [ |
13 'build/file', | 13 'build/file', |
14 'build/gsutil', | 14 'build/gsutil', |
15 'depot_tools/depot_tools', | 15 'depot_tools/depot_tools', |
16 'depot_tools/git', | 16 'depot_tools/git', |
17 'depot_tools/tryserver', | 17 'depot_tools/tryserver', |
| 18 'recipe_engine/json', |
18 'recipe_engine/path', | 19 'recipe_engine/path', |
19 'recipe_engine/properties', | 20 'recipe_engine/properties', |
20 'recipe_engine/python', | 21 'recipe_engine/python', |
21 'recipe_engine/raw_io', | 22 'recipe_engine/raw_io', |
22 'recipe_engine/step', | 23 'recipe_engine/step', |
23 'recipe_engine/time', | 24 'recipe_engine/time', |
24 'skia', | 25 'skia', |
25 'skia_swarming', | 26 'skia_swarming', |
26 ] | 27 ] |
27 | 28 |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 expiration=expiration, | 209 expiration=expiration, |
209 hard_timeout=hard_timeout, | 210 hard_timeout=hard_timeout, |
210 io_timeout=io_timeout, | 211 io_timeout=io_timeout, |
211 cipd_packages=cipd_packages) | 212 cipd_packages=cipd_packages) |
212 | 213 |
213 | 214 |
214 def checkout_steps(api): | 215 def checkout_steps(api): |
215 """Run the steps to obtain a checkout of Skia.""" | 216 """Run the steps to obtain a checkout of Skia.""" |
216 # In this case, we're already running inside a checkout of Skia, so just | 217 # In this case, we're already running inside a checkout of Skia, so just |
217 # report the currently-checked-out commit. | 218 # report the currently-checked-out commit. |
218 checkout_path = api.path['root'].join('skia') | 219 checkout_path = api.path['slave_build'].join('skia') |
219 got_revision = api.git( | 220 got_revision = api.git( |
220 'rev-parse', 'HEAD', cwd=checkout_path, | 221 'rev-parse', 'HEAD', cwd=checkout_path, |
221 stdout=api.raw_io.output(), | 222 stdout=api.raw_io.output(), |
222 step_test_data=lambda: api.raw_io.test_api.stream_output('abc123\n'), | 223 step_test_data=lambda: api.raw_io.test_api.stream_output('abc123\n'), |
223 ).stdout.rstrip() | 224 ).stdout.rstrip() |
224 cmd = ['python', '-c', '"print \'%s\'"' % got_revision] | 225 cmd = ['python', '-c', '"print \'%s\'"' % got_revision] |
225 res = api.step('got_revision', cmd=cmd) | 226 res = api.step('got_revision', cmd=cmd) |
226 res.presentation.properties['got_revision'] = got_revision | 227 res.presentation.properties['got_revision'] = got_revision |
227 api.path['checkout'] = checkout_path | 228 api.path['checkout'] = checkout_path |
| 229 |
| 230 # Write a fake .gclient file if none exists. This is required by .isolates. |
| 231 dot_gclient = api.path['slave_build'].join('.gclient') |
| 232 if not api.path.exists(dot_gclient): |
| 233 api.skia._writefile(dot_gclient, '') |
| 234 |
228 fix_filemodes(api, api.path['checkout']) | 235 fix_filemodes(api, api.path['checkout']) |
229 return got_revision | 236 return got_revision |
230 | 237 |
231 | 238 |
232 def housekeeper_swarm(api, builder_spec, got_revision, infrabots_dir, | 239 def housekeeper_swarm(api, builder_spec, got_revision, infrabots_dir, |
233 extra_isolate_hashes): | 240 extra_isolate_hashes): |
234 task = trigger_task( | 241 task = trigger_task( |
235 api, | 242 api, |
236 'housekeeper', | 243 'housekeeper', |
237 api.properties['buildername'], | 244 api.properties['buildername'], |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 def cipd_pkg(api, infrabots_dir, asset_name): | 552 def cipd_pkg(api, infrabots_dir, asset_name): |
546 """Find and return the CIPD package info for the given asset.""" | 553 """Find and return the CIPD package info for the given asset.""" |
547 version_file = infrabots_dir.join('assets', asset_name, 'VERSION') | 554 version_file = infrabots_dir.join('assets', asset_name, 'VERSION') |
548 version = api.skia._readfile(version_file, | 555 version = api.skia._readfile(version_file, |
549 name='read %s VERSION' % asset_name, | 556 name='read %s VERSION' % asset_name, |
550 test_data='0').rstrip() | 557 test_data='0').rstrip() |
551 version = 'version:%s' % version | 558 version = 'version:%s' % version |
552 return (asset_name, 'skia/bots/%s' % asset_name, version) | 559 return (asset_name, 'skia/bots/%s' % asset_name, version) |
553 | 560 |
554 | 561 |
| 562 def print_properties(api): |
| 563 """Dump out all properties for debugging purposes.""" |
| 564 props = {} |
| 565 for k, v in api.properties.iteritems(): |
| 566 props[k] = v |
| 567 api.python.inline( |
| 568 'print properties', |
| 569 ''' |
| 570 import json |
| 571 import sys |
| 572 |
| 573 with open(sys.argv[1]) as f: |
| 574 content = json.load(f) |
| 575 |
| 576 print json.dumps(content, indent=2) |
| 577 ''', |
| 578 args=[api.json.input(props)]) |
| 579 |
| 580 |
555 def RunSteps(api): | 581 def RunSteps(api): |
| 582 # TODO(borenet): Remove this once SwarmBucket is working. |
| 583 print_properties(api) |
| 584 |
556 got_revision = checkout_steps(api) | 585 got_revision = checkout_steps(api) |
557 infrabots_dir = api.path['checkout'].join('infra', 'bots') | 586 infrabots_dir = api.path['checkout'].join('infra', 'bots') |
558 api.skia_swarming.setup( | 587 api.skia_swarming.setup( |
559 infrabots_dir.join('tools', 'luci-go'), | 588 infrabots_dir.join('tools', 'luci-go'), |
560 swarming_rev='') | 589 swarming_rev='') |
561 | 590 |
562 # Run gsutil.py to ensure that it's installed. | 591 # Run gsutil.py to ensure that it's installed. |
563 api.gsutil(['help']) | 592 api.gsutil(['help']) |
564 | 593 |
565 extra_hashes = [] | 594 extra_hashes = [] |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
679 test += api.path.exists(*paths) | 708 test += api.path.exists(*paths) |
680 | 709 |
681 return test | 710 return test |
682 | 711 |
683 | 712 |
684 def GenTests(api): | 713 def GenTests(api): |
685 for mastername, slaves in TEST_BUILDERS.iteritems(): | 714 for mastername, slaves in TEST_BUILDERS.iteritems(): |
686 for slavename, builders_by_slave in slaves.iteritems(): | 715 for slavename, builders_by_slave in slaves.iteritems(): |
687 for builder in builders_by_slave: | 716 for builder in builders_by_slave: |
688 yield test_for_bot(api, builder, mastername, slavename) | 717 yield test_for_bot(api, builder, mastername, slavename) |
OLD | NEW |