Index: scripts/slave/recipes/cros/cbuildbot_tryjob.py |
diff --git a/scripts/slave/recipes/cros/cbuildbot_tryjob.py b/scripts/slave/recipes/cros/cbuildbot_tryjob.py |
index dc7b7f85521d188723e7c58cbf2d8309ecfcc305..a4c80b9752952969fb65088888ff63206d86aec2 100644 |
--- a/scripts/slave/recipes/cros/cbuildbot_tryjob.py |
+++ b/scripts/slave/recipes/cros/cbuildbot_tryjob.py |
@@ -13,10 +13,7 @@ DEPS = [ |
# Map master name to 'chromite' configuration name. |
_MASTER_CONFIG_MAP = { |
'chromiumos.tryserver': { |
- 'master_config': 'external', |
- 'variants': { |
- 'etc': ['chromeos_tryserver_etc'], |
- }, |
+ 'master_config': 'chromiumos_tryserver', |
}, |
} |
@@ -38,7 +35,14 @@ _TRYJOB_DATA = """ |
def RunSteps(api): |
# The 'cbuildbot' config name to build is the name of the builder. |
- cbb_config_name = api.properties.get('buildername') |
+ # |
+ # TODO(dnj): After we fully switch to BuildBucket scheduling, load the config |
+ # name from the BuildBucket job instead of `cbb_config` build |
+ # property. We can't do this yet b/c the job description can |
+ # specify multiple configs in one tryjob, so there's no way for us |
+ # to know which one we are. |
+ cbb_config_name = api.properties.get('cbb_config') |
+ assert cbb_config_name, "No configuration name specified." |
cbb = cros_chromite.Get() |
cbb_config = cbb.get(cbb_config_name) |
@@ -49,14 +53,40 @@ def RunSteps(api): |
_MASTER_CONFIG_MAP) |
api.chromite.c.cbb.config = cbb_config_name |
- # Determine our build directory name. |
- namebase = cbb_config_name |
- if cbb_config: |
- namebase = 'internal' if cbb_config.get('internal') else 'external' |
- api.chromite.c.cbb.builddir = '%s_master' % (namebase,) |
+ repository = api.properties.get('repository') |
+ revision = api.properties.get('revision') |
+ assert repository, "A repository must be specified." |
+ assert revision, "A revision must be specified." |
+ assert api.chromite.check_repository('tryjob', repository), ( |
+ "Refusing to query unknown tryjob repository: %s" % (repository,)) |
+ |
+ # Add parameters specified in the tryjob description. |
+ tryjob_args = api.chromite.load_try_job(repository, revision) |
+ |
+ # Determine our build directory name based on whether this build is internal |
+ # or external. |
+ # |
+ # We have two checkout options: internal and external. By default we will |
+ # infer which to use based on the Chromite config. However, the pinned |
+ # Chromite config may not be up to date. If the value cannot be inferred, we |
+ # will "quarantine" the build by running it in a separate "etc_master" |
+ # build root and instructing `cbuildbot` to clobber beforehand. |
+ # |
+ # TODO: As the configuration owner, Chromite should be the entity to make the |
+ # internal/external buildroot decision. A future iteration should add flags |
+ # to Chromite to inform it of the internal/external build roots on the slave |
+ # and defer to it to decide which to use based on the config that it is |
+ # executing. |
+ if not api.chromite.c.cbb.builddir: |
+ if cbb_config: |
+ namebase = 'internal' if cbb_config.get('internal') else 'external' |
+ api.chromite.c.cbb.builddir = '%s_master' % (namebase,) |
+ else: |
+ api.chromite.c.cbb.builddir = 'etc_master' |
+ api.chromite.c.cbb.clobber = True |
# Run our 'cbuildbot'. |
- api.chromite.run_cbuildbot(tryjob=True) |
+ api.chromite.run_cbuildbot(args=tryjob_args) |
def GenTests(api): |
@@ -65,10 +95,11 @@ def GenTests(api): |
api.test('basic') |
+ api.properties( |
mastername='chromiumos.tryserver', |
- buildername='x86-generic-full', |
+ buildername='full', |
slavename='test', |
repository='https://chromium.googlesource.com/chromiumos/tryjobs.git', |
revision=api.gitiles.make_hash('test'), |
+ cbb_config='x86-generic-full', |
) |
+ api.step_data( |
'Fetch tryjob commit', |
@@ -86,16 +117,16 @@ def GenTests(api): |
) |
) |
- # Test an 'etc' job (no Chromite config). |
+ # Test a config that is not registered in Chromite. |
yield ( |
- api.test('etc') |
+ api.test('unknown_config') |
+ api.properties( |
mastername='chromiumos.tryserver', |
buildername='etc', |
slavename='test', |
- cbb_variant='etc', |
repository='https://chromium.googlesource.com/chromiumos/tryjobs.git', |
revision=api.gitiles.make_hash('test'), |
+ cbb_config='xxx-fakeboard-fakebuild', |
) |
+ api.step_data( |
'Fetch tryjob commit', |
@@ -118,10 +149,11 @@ def GenTests(api): |
api.test('basic_no_files_in_commit') |
+ api.properties( |
mastername='chromiumos.tryserver', |
- buildername='x86-generic-full', |
+ buildername='full', |
slavename='test', |
repository='https://chromium.googlesource.com/chromiumos/tryjobs.git', |
revision=api.gitiles.make_hash('test'), |
+ cbb_config='x86-generic-full', |
) |
+ api.step_data( |
'Fetch tryjob commit', |