cbuildbot: start framework for builders being in sep modules
The current cbuildbot entry point encodes all of the various builder logic
and has been growing out of hand. Start a framework where cbuildbot is a
runner and the config controls what builder module actually gets run.
This will make it easier to add arbitrary builder types in the future --
just drop in a new builder module and update the config to refer to it.
BUG=brillo:134, chromium:299943
TEST=`./cbuildbot/run_tests` passes
TEST=precq doesn't blow up
Change-Id: Iab75fcec1749fdc3460b213ff60af94d05591bad
Reviewed-on: https://chromium-review.googlesource.com/246353
Trybot-Ready: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: David James <davidjames@chromium.org>
Reviewed-by: Aviv Keshet <akeshet@chromium.org>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
diff --git a/scripts/cbuildbot.py b/scripts/cbuildbot.py
index 3aac2e4..ecf69de 100644
--- a/scripts/cbuildbot.py
+++ b/scripts/cbuildbot.py
@@ -24,6 +24,7 @@
import tempfile
from chromite.cbuildbot import afdo
+from chromite.cbuildbot import builders
from chromite.cbuildbot import cbuildbot_config
from chromite.cbuildbot import cbuildbot_run
from chromite.cbuildbot import constants
@@ -934,10 +935,19 @@
builder_run = cbuildbot_run.BuilderRun(options, build_config, manager)
if metadata_dump_dict:
builder_run.attrs.metadata.UpdateWithDict(metadata_dump_dict)
- if _IsDistributedBuilder(options, chrome_rev, build_config):
- builder_cls = DistributedBuilder
+
+ builder_cls_name = builder_run.config.builder_class_name
+ if builder_cls_name is None:
+ if _IsDistributedBuilder(options, chrome_rev, build_config):
+ builder_cls = DistributedBuilder
+ else:
+ builder_cls = SimpleBuilder
else:
- builder_cls = SimpleBuilder
+ builder_cls = builders.GetBuilderCls(builder_cls_name)
+ if builder_cls is None:
+ cros_build_lib.Die('config %s uses an unknown builder_class_name: %s',
+ build_config.name, builder_cls_name)
+
builder = builder_cls(builder_run)
if not builder.Run():
sys.exit(1)