cbuildbot: A board-independent CQ master.
With this change, the new Commit Queue ("Paladin") master is independent
from any board. The Mario Paladin, which previously served as the
master, is now just another Commit Queue slave builder.
BUG=chromium:289000
TEST=pylint
TEST=unittest
TEST=function tests below all use this command base command:
`cbuildbot --debug --buildbot --remote -p 'chromiumos/chromite' master-paladin`
1) Run against ToT runs upload_prebuilts expected commands.
2) Add --version=<manifest_version> with a previous CQ run that failed
because of a slave builder. Put in temporary code that has master
really check for slave status (even in debug mode). See that it
correctly picks up on failed slave.
3) Add --version<manifest_version> witha a previous CQ run that passed.
Keep the same temporary code. It runs through fine.
Change-Id: I874e3b3f887eb5e44cd49d764788bf3ee813cb0e
Reviewed-on: https://chromium-review.googlesource.com/172163
Tested-by: Matt Tennant <mtennant@chromium.org>
Reviewed-by: Matt Tennant <mtennant@chromium.org>
diff --git a/scripts/cbuildbot.py b/scripts/cbuildbot.py
index 81d21a0..fee4f0e 100644
--- a/scripts/cbuildbot.py
+++ b/scripts/cbuildbot.py
@@ -483,6 +483,12 @@
self._RunStage(stages.SetupBoardStage)
self._RunStage(stages.RefreshPackageStatusStage)
+ def _RunMasterPaladinBuild(self):
+ """Runs through the stages of the paladin (commit queue) master build."""
+ self._RunStage(stages.InitSDKStage)
+ self._RunStage(stages.UprevStage)
+ self._RunStage(stages.MasterUploadPrebuiltsStage)
+
def _RunDefaultTypeBuild(self):
"""Runs through the stages of a non-special-type build."""
self._RunStage(stages.InitSDKStage)
@@ -552,6 +558,9 @@
self._RunChrootBuilderTypeBuild()
elif self._run.config.build_type == constants.REFRESH_PACKAGES_TYPE:
self._RunRefreshPackagesTypeBuild()
+ elif (self._run.config.build_type == constants.PALADIN_TYPE and
+ self._run.config.master):
+ self._RunMasterPaladinBuild()
else:
self._RunDefaultTypeBuild()
@@ -921,6 +930,7 @@
class CustomParser(commandline.FilteringParser):
"""Custom option parser which supports arguments passed-trhough to trybot"""
+
DEFAULT_OPTION_CLASS = CustomOption
def add_remote_option(self, *args, **kwargs):