Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(588)

Unified Diff: scripts/slave/recipes/cros/cbuildbot_tryjob.py

Issue 1344673003: CrOS: Switch tryserver over to recipes, Gitiles. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Clean up comments. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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',

Powered by Google App Engine
This is Rietveld 408576698