Index: scripts/slave/recipes/skia/swarm_trigger.py |
diff --git a/scripts/slave/recipes/skia/swarm_trigger.py b/scripts/slave/recipes/skia/swarm_trigger.py |
index ab4bb912e5d6063dc0fb6a2c7301c96e96b5a107..5e3dadcfd14fdc1a486c23fabb5925037e026b96 100644 |
--- a/scripts/slave/recipes/skia/swarm_trigger.py |
+++ b/scripts/slave/recipes/skia/swarm_trigger.py |
@@ -168,7 +168,7 @@ def isolate_recipes(api): |
def trigger_task(api, task_name, builder, master, slave, buildnumber, |
builder_spec, got_revision, infrabots_dir, idempotent=False, |
store_output=True, extra_isolate_hashes=None, expiration=None, |
- hard_timeout=None, io_timeout=None): |
+ hard_timeout=None, io_timeout=None, cipd_packages=None): |
"""Trigger the given bot to run as a Swarming task.""" |
# TODO(borenet): We're using Swarming directly to run the recipe through |
# recipes.py. Once it's possible to track the state of a Buildbucket build, |
@@ -220,7 +220,8 @@ def trigger_task(api, task_name, builder, master, slave, buildnumber, |
extra_args=extra_args, |
expiration=expiration, |
hard_timeout=hard_timeout, |
- io_timeout=io_timeout) |
+ io_timeout=io_timeout, |
+ cipd_packages=cipd_packages) |
def checkout_steps(api): |
@@ -262,7 +263,7 @@ def housekeeper_swarm(api, builder_spec, got_revision, infrabots_dir, |
def compile_steps_swarm(api, builder_spec, got_revision, infrabots_dir, |
- extra_isolate_hashes): |
+ extra_isolate_hashes, cipd_packages): |
builder_name = derive_compile_bot_name(api.properties['buildername'], |
builder_spec) |
compile_builder_spec = builder_spec |
@@ -305,7 +306,8 @@ def compile_steps_swarm(api, builder_spec, got_revision, infrabots_dir, |
infrabots_dir, |
idempotent=True, |
store_output=False, |
- extra_isolate_hashes=extra_hashes) |
+ extra_isolate_hashes=extra_hashes, |
+ cipd_packages=cipd_packages) |
# Wait for compile to finish, record the results hash. |
return api.skia_swarming.collect_swarming_task_isolate_hash(task) |
@@ -328,7 +330,7 @@ def get_timeouts(builder_cfg): |
def perf_steps_trigger(api, builder_spec, got_revision, infrabots_dir, |
- extra_hashes): |
+ extra_hashes, cipd_packages): |
"""Trigger perf tests via Swarming.""" |
expiration, hard_timeout, io_timeout = get_timeouts( |
@@ -346,7 +348,8 @@ def perf_steps_trigger(api, builder_spec, got_revision, infrabots_dir, |
extra_isolate_hashes=extra_hashes, |
expiration=expiration, |
hard_timeout=hard_timeout, |
- io_timeout=io_timeout) |
+ io_timeout=io_timeout, |
+ cipd_packages=cipd_packages) |
def perf_steps_collect(api, task, upload_perf_results, got_revision, |
@@ -388,7 +391,7 @@ def perf_steps_collect(api, task, upload_perf_results, got_revision, |
def test_steps_trigger(api, builder_spec, got_revision, infrabots_dir, |
- extra_hashes): |
+ extra_hashes, cipd_packages): |
"""Trigger DM via Swarming.""" |
expiration, hard_timeout, io_timeout = get_timeouts( |
builder_spec['builder_cfg']) |
@@ -405,7 +408,8 @@ def test_steps_trigger(api, builder_spec, got_revision, infrabots_dir, |
extra_isolate_hashes=extra_hashes, |
expiration=expiration, |
hard_timeout=hard_timeout, |
- io_timeout=io_timeout) |
+ io_timeout=io_timeout, |
+ cipd_packages=cipd_packages) |
def test_steps_collect(api, task, upload_dm_results, got_revision, is_trybot, |
@@ -531,41 +535,60 @@ def RunSteps(api): |
recipes_hash = isolate_recipes(api) |
extra_hashes = [recipes_hash] |
+ # Get ready to compile. |
+ compile_cipd_deps = [] |
+ extra_compile_hashes = [recipes_hash] |
+ |
# Android bots require an SDK. |
if 'Android' in api.properties['buildername']: |
- test_data = 'a27a70d73b85191b9e671ff2a44547c3f7cc15ee' |
- hash_file = infrabots_dir.join('android_sdk_hash') |
- # try/except as a temporary measure to prevent breakages for backfills |
- # and branches. |
- try: |
- h = api.skia._readfile(hash_file, |
- name='Read android_sdk_hash', |
- test_data=test_data).rstrip() |
- except api.step.StepFailure: |
- # Just fall back on the original hash. |
- h = 'a27a70d73b85191b9e671ff2a44547c3f7cc15ee' |
- extra_hashes.append(h) |
- |
+ android_sdk_version_file = infrabots_dir.join( |
+ 'assets', 'android_sdk', 'VERSION') |
+ if api.path.exists(android_sdk_version_file): |
+ android_sdk_version = api.skia._readfile(android_sdk_version_file, |
+ name='read android_sdk VERSION', |
+ test_data='0').rstrip() |
+ android_sdk_version = 'version:%s' % android_sdk_version |
+ pkg = ('android_sdk', 'skia/bots/android_sdk', android_sdk_version) |
+ compile_cipd_deps.append(pkg) |
+ else: |
+ # TODO(borenet): Remove this legacy method after 7/1/2016. |
+ test_data = 'a27a70d73b85191b9e671ff2a44547c3f7cc15ee' |
+ hash_file = infrabots_dir.join('android_sdk_hash') |
+ # try/except as a temporary measure to prevent breakages for backfills |
+ # and branches. |
+ try: |
+ h = api.skia._readfile(hash_file, |
+ name='Read android_sdk_hash', |
+ test_data=test_data).rstrip() |
+ except api.step.StepFailure: |
+ # Just fall back on the original hash. |
+ h = 'a27a70d73b85191b9e671ff2a44547c3f7cc15ee' |
+ extra_hashes.append(h) |
+ extra_compile_hashes.append(h) |
+ |
+ # Compile. |
do_compile_steps = builder_spec.get('do_compile_steps', True) |
- compile_hash = None |
if do_compile_steps: |
- compile_hash = compile_steps_swarm(api, builder_spec, got_revision, |
- infrabots_dir, extra_hashes) |
+ extra_hashes.append(compile_steps_swarm( |
+ api, builder_spec, got_revision, infrabots_dir, extra_compile_hashes, |
+ cipd_packages=compile_cipd_deps)) |
if builder_cfg['role'] == 'Housekeeper': |
housekeeper_swarm(api, builder_spec, got_revision, infrabots_dir, |
extra_hashes) |
return |
+ # Get ready to test/perf. |
+ |
+ # CIPD packages needed by test/perf. |
+ cipd_packages = [] |
+ |
do_test_steps = builder_spec['do_test_steps'] |
do_perf_steps = builder_spec['do_perf_steps'] |
if not (do_test_steps or do_perf_steps): |
return |
- if compile_hash: |
- extra_hashes.append(compile_hash) |
- |
api.skia.download_skps(api.path['slave_build'].join('tmp'), |
api.path['slave_build'].join('skps')) |
api.skia.download_images(api.path['slave_build'].join('tmp'), |
@@ -575,10 +598,10 @@ def RunSteps(api): |
perf_task = None |
if do_test_steps: |
test_task = test_steps_trigger(api, builder_spec, got_revision, |
- infrabots_dir, extra_hashes) |
+ infrabots_dir, extra_hashes, cipd_packages) |
if do_perf_steps: |
perf_task = perf_steps_trigger(api, builder_spec, got_revision, |
- infrabots_dir, extra_hashes) |
+ infrabots_dir, extra_hashes, cipd_packages) |
is_trybot = builder_cfg['is_trybot'] |
if test_task: |
test_steps_collect(api, test_task, builder_spec['upload_dm_results'], |
@@ -588,7 +611,8 @@ def RunSteps(api): |
got_revision, is_trybot) |
-def test_for_bot(api, builder, mastername, slavename, testname=None): |
+def test_for_bot(api, builder, mastername, slavename, testname=None, |
+ legacy_android_sdk=False): |
"""Generate a test for the given bot.""" |
testname = testname or builder |
test = ( |
@@ -607,6 +631,10 @@ def test_for_bot(api, builder, mastername, slavename, testname=None): |
test += api.properties(issue=500, |
patchset=1, |
rietveld='https://codereview.chromium.org') |
+ if 'Android' in builder: |
+ if not legacy_android_sdk: |
+ test += api.path.exists(api.path['slave_build'].join( |
+ 'skia', 'infra', 'bots', 'assets', 'android_sdk', 'VERSION')) |
if 'Coverage' not in builder: |
test += api.step_data( |
'upload new .isolated file for compile_skia', |
@@ -657,6 +685,13 @@ def GenTests(api): |
builder = 'Build-Ubuntu-GCC-Arm7-Release-Android_Vulkan' |
master = 'client.skia.compile' |
slave = 'skiabot-linux-compile-000' |
- test = test_for_bot(api, builder, master, slave, 'Missing_android_sdk_hash') |
+ test = test_for_bot(api, builder, master, slave, 'legacy_android_sdk', |
+ legacy_android_sdk=True) |
+ test += api.step_data('Read android_sdk_hash', |
+ stdout=api.raw_io.output('<android_sdk_hash>')) |
+ yield test |
+ |
+ test = test_for_bot(api, builder, master, slave, 'Missing_android_sdk_hash', |
+ legacy_android_sdk=True) |
test += api.step_data('Read android_sdk_hash', retcode=1) |
yield test |