From a389285fb11f578535219764d230b88447cc833c Mon Sep 17 00:00:00 2001 From: David Boreham Date: Fri, 23 Feb 2024 12:17:53 -0700 Subject: [PATCH] Refactor, support build-webapp --- stack_orchestrator/build/build_containers.py | 29 +++++++++++--------- stack_orchestrator/build/build_types.py | 3 +- stack_orchestrator/build/build_webapp.py | 21 +++++++++++--- 3 files changed, 34 insertions(+), 19 deletions(-) diff --git a/stack_orchestrator/build/build_containers.py b/stack_orchestrator/build/build_containers.py index bae67514..44fc50d6 100644 --- a/stack_orchestrator/build/build_containers.py +++ b/stack_orchestrator/build/build_containers.py @@ -62,7 +62,7 @@ def make_container_build_env(dev_root_path: str, return container_build_env -def process_container(build_context: BuildContext): +def process_container(build_context: BuildContext) -> bool: if not opts.o.quiet: print(f"Building: {build_context.container}") @@ -108,17 +108,12 @@ def process_container(build_context: BuildContext): if opts.o.verbose: print(f"Return code is: {build_result.returncode}") if build_result.returncode != 0: - print(f"Error running build for {build_context.container}") - if not opts.o.continue_on_error: - print("FATAL Error: container build failed and --continue-on-error not set, exiting") - sys.exit(1) - else: - print("****** Container Build Error, continuing because --continue-on-error is set") + return False else: - if build_context.publish_images: - publish_image(default_container_tag, build_context.image_registry) + return True else: print("Skipped") + return True @click.command() @@ -187,11 +182,19 @@ def command(ctx, include, exclude, force_rebuild, extra_build_args, publish_imag container, container_build_dir, container_build_env, - dev_root_path, - publish_images, - image_registry + dev_root_path ) - process_container(build_context) + result = process_container(build_context) + if result: + if publish_images: + publish_image(container, image_registry) + else: + print(f"Error running build for {build_context.container}") + if not opts.o.continue_on_error: + error_exit("container build failed and --continue-on-error not set, exiting") + sys.exit(1) + else: + print("****** Container Build Error, continuing because --continue-on-error is set") else: if opts.o.verbose: print(f"Excluding: {container}") diff --git a/stack_orchestrator/build/build_types.py b/stack_orchestrator/build/build_types.py index e76bdd9a..971188fe 100644 --- a/stack_orchestrator/build/build_types.py +++ b/stack_orchestrator/build/build_types.py @@ -26,5 +26,4 @@ class BuildContext: container_build_dir: Path container_build_env: Mapping[str,str] dev_root_path: str - publish_images: bool - image_registry: str + diff --git a/stack_orchestrator/build/build_webapp.py b/stack_orchestrator/build/build_webapp.py index a9124590..fcdd8f66 100644 --- a/stack_orchestrator/build/build_webapp.py +++ b/stack_orchestrator/build/build_webapp.py @@ -26,6 +26,7 @@ import click from pathlib import Path from stack_orchestrator.build import build_containers from stack_orchestrator.deploy.webapp.util import determine_base_container +from stack_orchestrator.build.build_types import BuildContext @click.command() @@ -65,8 +66,14 @@ def command(ctx, base_container, source_repo, force_rebuild, extra_build_args, t container_build_env = build_containers.make_container_build_env(dev_root_path, container_build_dir, debug, force_rebuild, extra_build_args) - build_containers.process_container(None, base_container, container_build_dir, container_build_env, dev_root_path, quiet, - verbose, dry_run, continue_on_error) + build_context_1 = BuildContext( + stack, + base_container, + container_build_dir, + container_build_env, + dev_root_path, + ) + build_containers.process_container(build_context_1) # Now build the target webapp. We use the same build script, but with a different Dockerfile and work dir. container_build_env["CERC_WEBAPP_BUILD_RUNNING"] = "true" @@ -80,5 +87,11 @@ def command(ctx, base_container, source_repo, force_rebuild, extra_build_args, t else: container_build_env["CERC_CONTAINER_BUILD_TAG"] = tag - build_containers.process_container(None, base_container, container_build_dir, container_build_env, dev_root_path, quiet, - verbose, dry_run, continue_on_error) + build_context_2 = BuildContext( + stack, + base_container, + container_build_dir, + container_build_env, + dev_root_path, + ) + build_containers.process_container(build_context_2)