Initial impl of BuildTestServiceContainers
Runs all of the docker test container builds outside of the chroot.
BUG=b:190822895
TEST=unit
Change-Id: I1cba3a2184d324e0c7dbe2eaf809a805fb6f9f7a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2970303
Tested-by: C Shapiro <shapiroc@chromium.org>
Auto-Submit: C Shapiro <shapiroc@chromium.org>
Commit-Queue: C Shapiro <shapiroc@chromium.org>
Reviewed-by: Mike Nichols <mikenichols@chromium.org>
diff --git a/api/controller/test.py b/api/controller/test.py
index 380b774..4cdff77 100644
--- a/api/controller/test.py
+++ b/api/controller/test.py
@@ -143,6 +143,41 @@
deserialize_metrics_log(output_proto.events, prefix=build_target.name)
+SRC_DIR = os.path.join(constants.SOURCE_ROOT, 'src')
+TEST_SERVICE_DIR = os.path.join(SRC_DIR, 'platform/dev/src/chromiumos/test')
+TEST_CONTAINER_BUILD_SCRIPTS = [
+ os.path.join(TEST_SERVICE_DIR, 'provision/docker/build-dockerimage.sh'),
+ os.path.join(TEST_SERVICE_DIR, 'dut/docker/build-dockerimage.sh'),
+]
+
+
+@faux.all_empty
+@validate.require('build_target.name')
+@validate.require('chroot.path')
+@validate.require('version')
+@validate.validation_complete
+def BuildTestServiceContainers(input_proto, output_proto, _config):
+ """Builds docker containers for all test services and pushes them to gcr.io"""
+ build_target = controller_util.ParseBuildTarget(input_proto.build_target)
+ chroot = controller_util.ParseChroot(input_proto.chroot)
+ version = input_proto.version
+ sysroot = sysroot_lib.Sysroot(build_target.root)
+
+ for build_script in TEST_CONTAINER_BUILD_SCRIPTS:
+ cmd = [build_script, chroot.path, version, sysroot.path]
+ cmd_result = cros_build_lib.run(cmd, check=False)
+ if cmd_result.returncode == 0:
+ output_proto.results.append(test_pb2.TestServiceContainerBuildResult(
+ success = test_pb2.TestServiceContainerBuildResult.Success()
+ ))
+ else:
+ output_proto.results.append(test_pb2.TestServiceContainerBuildResult(
+ failure = test_pb2.TestServiceContainerBuildResult.Failure(
+ error_message = cmd_result.stderr
+ )
+ ))
+
+
@faux.empty_success
@faux.empty_completed_unsuccessfully_error
@validate.validation_complete