diff --git a/build/core/build_center.py b/build/core/build_center.py index bd101ee2..91814e29 100644 --- a/build/core/build_center.py +++ b/build/core/build_center.py @@ -28,7 +28,7 @@ class BuildCenter: - def __init__(self, build_config, process_list, type): + def __init__(self, build_config, process_list, type, arg_config=None): self.logger = logging.getLogger(__name__) build_utility.setup_logger_config(self.logger) @@ -36,6 +36,8 @@ def __init__(self, build_config, process_list, type): self.build_config = build_config self.task_type = type + self.arg_config = arg_config + self.process_list = [service.lower() for service in process_list] if process_list is not None else None # Initialize docker_cli instance @@ -138,7 +140,7 @@ def build_center(self): for inedge in self.graph.services[item].inedges: build_worker.copy_dependency_folder(os.path.join(self.codeDir,inedge), os.path.join(self.graph.services[item].path,self.dependencyDir+inedge)) - build_worker.build_single_component(self.graph.services[item]) + build_worker.build_single_component(self.graph.services[item], self.arg_config.imagelist) self.logger.info("Build all components succeed") except Exception as e: diff --git a/build/core/build_handler.py b/build/core/build_handler.py index c96038ca..2b997d47 100644 --- a/build/core/build_handler.py +++ b/build/core/build_handler.py @@ -40,7 +40,7 @@ def __init__(self, docker_cli): self.dependencyDir = 'dependency' - def build_single_component(self, service): + def build_single_component(self, service, imagelist=None): self.logger.info("Starts to build {0}".format(service.service_name)) @@ -53,7 +53,8 @@ def build_single_component(self, service): for dockerfile_prefix in service.docker_files: image_name = os.path.splitext(dockerfile_prefix)[0] dockerfile = os.path.join(service.path, 'build/' + dockerfile_prefix + '.dockerfile') - self.docker_cli.docker_image_build(image_name, dockerfile, service.path) + if imagelist is None or image_name in imagelist: + self.docker_cli.docker_image_build(image_name, dockerfile, service.path) post_build = os.path.join(service.path, self.build_post) if os.path.exists(post_build): diff --git a/build/pai_build.py b/build/pai_build.py index 033f5d17..be4218eb 100755 --- a/build/pai_build.py +++ b/build/pai_build.py @@ -39,7 +39,7 @@ def load_build_config(config_dir): def build_service(args, config_model): - pai_build = build_center.BuildCenter(config_model, args.service, 'k8s') + pai_build = build_center.BuildCenter(config_model, args.service, 'k8s', args) pai_build.set_build_cache_type(args.nocache) pai_build.build_center() @@ -98,6 +98,13 @@ def main(): action='store_true', help="Build the service using cache or not" ) + build_parser.add_argument( + '-i', '--imagelist', + type=str, + nargs='+', + default=None, + help="The image list you want to build" + ) build_parser.set_defaults(func=build_service) # Push commands