From e1d37fb1a380e2430c911ab2a2606d3cd5c15233 Mon Sep 17 00:00:00 2001 From: administrator Date: Tue, 18 Nov 2025 13:21:30 +0000 Subject: [PATCH 1/6] fix some image pull secrets and log manager when remote dir is none --- src/alert-manager/deploy/redis-deployment.yaml.template | 4 +++- .../deploy/copilot-chat-deployment.yaml.template | 2 ++ src/log-manager/src/nginx/get_log_content.lua | 5 +++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/alert-manager/deploy/redis-deployment.yaml.template b/src/alert-manager/deploy/redis-deployment.yaml.template index 680007f2..0b315679 100644 --- a/src/alert-manager/deploy/redis-deployment.yaml.template +++ b/src/alert-manager/deploy/redis-deployment.yaml.template @@ -72,6 +72,8 @@ spec: periodSeconds: 10 successThreshold: 1 failureThreshold: 3 + imagePullSecrets: + - name: {{ cluster_cfg["cluster"]["docker-registry"]["secret-name"] }} volumes: - name: redis-data hostPath: @@ -79,4 +81,4 @@ spec: type: "" - name: redis-config configMap: - name: redis-config \ No newline at end of file + name: redis-config diff --git a/src/copilot-chat/deploy/copilot-chat-deployment.yaml.template b/src/copilot-chat/deploy/copilot-chat-deployment.yaml.template index 194014c7..a57e769d 100644 --- a/src/copilot-chat/deploy/copilot-chat-deployment.yaml.template +++ b/src/copilot-chat/deploy/copilot-chat-deployment.yaml.template @@ -101,6 +101,8 @@ spec: securityContext: runAsUser: 0 runAsGroup: 0 + imagePullSecrets: + - name: {{ cluster_cfg["cluster"]["docker-registry"]["secret-name"] }} volumes: - name: copilot-chat-logs emptyDir: {} diff --git a/src/log-manager/src/nginx/get_log_content.lua b/src/log-manager/src/nginx/get_log_content.lua index c1ad8f55..99f1a9c9 100644 --- a/src/log-manager/src/nginx/get_log_content.lua +++ b/src/log-manager/src/nginx/get_log_content.lua @@ -70,12 +70,12 @@ end local log_path = log_dir..log_name local use_remote_log_dir = false -if path.isdir(log_path) and util.is_directory_empty(log_path) then +if path.isdir(log_path) and util.is_directory_empty(log_path) and remote_log_dir then ngx.log(ngx.INFO, "falling back to remote log directory") log_path = remote_log_dir..log_name log_dir = remote_log_dir use_remote_log_dir = true -elseif not path.exists(log_path) then +elseif not path.exists(log_path) and remote_log_dir then ngx.log(ngx.INFO, "path not exist, falling back to remote log directory") log_path = remote_log_dir..log_name log_dir = remote_log_dir @@ -120,3 +120,4 @@ else ngx.req.set_uri("/~/current/"..string.sub(path.abspath(log_path), string.len(file_prefix) + 1), true) end + From cc1cce3168164a27e8e52a14d6e05b05ad73989a Mon Sep 17 00:00:00 2001 From: administrator Date: Wed, 19 Nov 2025 08:32:57 +0000 Subject: [PATCH 2/6] fix bug of openpai-rumtime image pull --- build/core/build_center.py | 8 +++++++- build/core/build_handler.py | 5 +++-- build/core/build_utility.py | 8 +++++++- .../build/openpai-runtime.common.dockerfile | 11 +++++++++-- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/build/core/build_center.py b/build/core/build_center.py index 91814e29..a1faf4f9 100644 --- a/build/core/build_center.py +++ b/build/core/build_center.py @@ -140,7 +140,12 @@ 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], self.arg_config.imagelist) + + build_args = { + 'TAG': self.build_config['dockerRegistryInfo']['dockerTag'], + 'REGISTRY': f"{self.build_config['dockerRegistryInfo']['dockerRegistryDomain']}/{self.build_config['dockerRegistryInfo']['dockerNameSpace']}" + } + build_worker.build_single_component(self.graph.services[item], self.arg_config.imagelist, build_args=build_args) self.logger.info("Build all components succeed") except Exception as e: @@ -178,3 +183,4 @@ def push_center(self): self.docker_cli.docker_image_tag(image,self.build_config['dockerRegistryInfo']['dockerTag']) self.docker_cli.docker_image_push(image,self.build_config['dockerRegistryInfo']['dockerTag']) self.logger.info("Push image:{0} successfully".format(image)) + diff --git a/build/core/build_handler.py b/build/core/build_handler.py index 2b997d47..b9e889fb 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, imagelist=None): + def build_single_component(self, service, imagelist=None, build_args=None): self.logger.info("Starts to build {0}".format(service.service_name)) @@ -54,7 +54,7 @@ def build_single_component(self, service, imagelist=None): image_name = os.path.splitext(dockerfile_prefix)[0] dockerfile = os.path.join(service.path, 'build/' + dockerfile_prefix + '.dockerfile') if imagelist is None or image_name in imagelist: - self.docker_cli.docker_image_build(image_name, dockerfile, service.path) + self.docker_cli.docker_image_build(image_name, dockerfile, service.path, build_args) post_build = os.path.join(service.path, self.build_post) if os.path.exists(post_build): @@ -84,3 +84,4 @@ def clean_temp_folder(self, service_path): if os.path.isdir(temp_dependency_dir): shutil.rmtree(temp_dependency_dir) + diff --git a/build/core/build_utility.py b/build/core/build_utility.py index 28c0385a..844768ff 100644 --- a/build/core/build_utility.py +++ b/build/core/build_utility.py @@ -53,11 +53,16 @@ def docker_login(self): execute_shell(shell_cmd) - def docker_image_build(self, image_name, dockerfile_path, build_path): + def docker_image_build(self, image_name, dockerfile_path, build_path, build_args=None): if self.build_nocache: cmd = "docker build --no-cache -t {0} -f {1} {2}".format(image_name, dockerfile_path, build_path) else: cmd = "docker build -t {0} -f {1} {2}".format(image_name, dockerfile_path, build_path) + + if build_args is not None: + for key, value in build_args.items(): + cmd += " --build-arg {0}={1}".format(key, value) + execute_shell(cmd) @@ -122,3 +127,4 @@ def load_yaml_config(config_path): cluster_data = yaml.safe_load(f) return cluster_data + diff --git a/src/openpai-runtime/build/openpai-runtime.common.dockerfile b/src/openpai-runtime/build/openpai-runtime.common.dockerfile index d2cad57b..d6583dea 100644 --- a/src/openpai-runtime/build/openpai-runtime.common.dockerfile +++ b/src/openpai-runtime/build/openpai-runtime.common.dockerfile @@ -17,6 +17,13 @@ # Package Cache Data Layer Starts +ARG TAG=v1.0.0 +ARG REGISTRY=frameworkcontroller +ARG BARRIER_DIR=/opt/frameworkcontroller/frameworkbarrier + +# Stage to pull the frameworkbarrier image +FROM ${REGISTRY}/frameworkbarrier:${TAG} AS barrier + FROM ubuntu:20.04 AS ubuntu_20_04_cache WORKDIR /src @@ -64,8 +71,8 @@ WORKDIR /kube-runtime/src COPY src/src ./ COPY src/requirements.txt ./ -#TODO: update the hardcode image for arm64 -COPY --from=frameworkcontroller/frameworkbarrier:v1.0.0 $BARRIER_DIR/frameworkbarrier ./init.d +# Copy from the named stage instead of directly from image +COPY --from=barrier $BARRIER_DIR/frameworkbarrier ./init.d COPY --from=builder ${INSTALL_DIR}/* ./runtime.d/ RUN pip install -r requirements.txt From b982accd55e46cfd21b6bbee6cafbbe5f4d5a022 Mon Sep 17 00:00:00 2001 From: yutingjiang Date: Tue, 25 Nov 2025 03:16:41 +0000 Subject: [PATCH 3/6] Revert "fix bug of openpai-rumtime image pull" This reverts commit cc1cce3168164a27e8e52a14d6e05b05ad73989a. --- build/core/build_center.py | 8 +------- build/core/build_handler.py | 5 ++--- build/core/build_utility.py | 8 +------- .../build/openpai-runtime.common.dockerfile | 11 ++--------- 4 files changed, 6 insertions(+), 26 deletions(-) diff --git a/build/core/build_center.py b/build/core/build_center.py index a1faf4f9..91814e29 100644 --- a/build/core/build_center.py +++ b/build/core/build_center.py @@ -140,12 +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_args = { - 'TAG': self.build_config['dockerRegistryInfo']['dockerTag'], - 'REGISTRY': f"{self.build_config['dockerRegistryInfo']['dockerRegistryDomain']}/{self.build_config['dockerRegistryInfo']['dockerNameSpace']}" - } - build_worker.build_single_component(self.graph.services[item], self.arg_config.imagelist, build_args=build_args) + build_worker.build_single_component(self.graph.services[item], self.arg_config.imagelist) self.logger.info("Build all components succeed") except Exception as e: @@ -183,4 +178,3 @@ def push_center(self): self.docker_cli.docker_image_tag(image,self.build_config['dockerRegistryInfo']['dockerTag']) self.docker_cli.docker_image_push(image,self.build_config['dockerRegistryInfo']['dockerTag']) self.logger.info("Push image:{0} successfully".format(image)) - diff --git a/build/core/build_handler.py b/build/core/build_handler.py index b9e889fb..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, imagelist=None, build_args=None): + def build_single_component(self, service, imagelist=None): self.logger.info("Starts to build {0}".format(service.service_name)) @@ -54,7 +54,7 @@ def build_single_component(self, service, imagelist=None, build_args=None): image_name = os.path.splitext(dockerfile_prefix)[0] dockerfile = os.path.join(service.path, 'build/' + dockerfile_prefix + '.dockerfile') if imagelist is None or image_name in imagelist: - self.docker_cli.docker_image_build(image_name, dockerfile, service.path, build_args) + 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): @@ -84,4 +84,3 @@ def clean_temp_folder(self, service_path): if os.path.isdir(temp_dependency_dir): shutil.rmtree(temp_dependency_dir) - diff --git a/build/core/build_utility.py b/build/core/build_utility.py index 844768ff..28c0385a 100644 --- a/build/core/build_utility.py +++ b/build/core/build_utility.py @@ -53,16 +53,11 @@ def docker_login(self): execute_shell(shell_cmd) - def docker_image_build(self, image_name, dockerfile_path, build_path, build_args=None): + def docker_image_build(self, image_name, dockerfile_path, build_path): if self.build_nocache: cmd = "docker build --no-cache -t {0} -f {1} {2}".format(image_name, dockerfile_path, build_path) else: cmd = "docker build -t {0} -f {1} {2}".format(image_name, dockerfile_path, build_path) - - if build_args is not None: - for key, value in build_args.items(): - cmd += " --build-arg {0}={1}".format(key, value) - execute_shell(cmd) @@ -127,4 +122,3 @@ def load_yaml_config(config_path): cluster_data = yaml.safe_load(f) return cluster_data - diff --git a/src/openpai-runtime/build/openpai-runtime.common.dockerfile b/src/openpai-runtime/build/openpai-runtime.common.dockerfile index d6583dea..d2cad57b 100644 --- a/src/openpai-runtime/build/openpai-runtime.common.dockerfile +++ b/src/openpai-runtime/build/openpai-runtime.common.dockerfile @@ -17,13 +17,6 @@ # Package Cache Data Layer Starts -ARG TAG=v1.0.0 -ARG REGISTRY=frameworkcontroller -ARG BARRIER_DIR=/opt/frameworkcontroller/frameworkbarrier - -# Stage to pull the frameworkbarrier image -FROM ${REGISTRY}/frameworkbarrier:${TAG} AS barrier - FROM ubuntu:20.04 AS ubuntu_20_04_cache WORKDIR /src @@ -71,8 +64,8 @@ WORKDIR /kube-runtime/src COPY src/src ./ COPY src/requirements.txt ./ -# Copy from the named stage instead of directly from image -COPY --from=barrier $BARRIER_DIR/frameworkbarrier ./init.d +#TODO: update the hardcode image for arm64 +COPY --from=frameworkcontroller/frameworkbarrier:v1.0.0 $BARRIER_DIR/frameworkbarrier ./init.d COPY --from=builder ${INSTALL_DIR}/* ./runtime.d/ RUN pip install -r requirements.txt From f0812b3a8e0ce00ed145a0781faaea29ec0f6efd Mon Sep 17 00:00:00 2001 From: yutingjiang Date: Thu, 27 Nov 2025 01:30:56 +0000 Subject: [PATCH 4/6] add dockerfile for alert manager --- src/alert-manager/build/alertmanager.common.dockerfile | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/alert-manager/build/alertmanager.common.dockerfile diff --git a/src/alert-manager/build/alertmanager.common.dockerfile b/src/alert-manager/build/alertmanager.common.dockerfile new file mode 100644 index 00000000..2a06ee77 --- /dev/null +++ b/src/alert-manager/build/alertmanager.common.dockerfile @@ -0,0 +1,4 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +FROM prom/alertmanager:v0.29.0 From b719652c00cda350731d56a823503bb52748ede0 Mon Sep 17 00:00:00 2001 From: yutingjiang Date: Thu, 27 Nov 2025 01:33:21 +0000 Subject: [PATCH 5/6] updated --- src/alert-manager/deploy/alert-manager-deployment.yaml.template | 1 + 1 file changed, 1 insertion(+) diff --git a/src/alert-manager/deploy/alert-manager-deployment.yaml.template b/src/alert-manager/deploy/alert-manager-deployment.yaml.template index 9a6c79c5..eeb27474 100755 --- a/src/alert-manager/deploy/alert-manager-deployment.yaml.template +++ b/src/alert-manager/deploy/alert-manager-deployment.yaml.template @@ -42,6 +42,7 @@ spec: containers: - name: alertmanager image: {{ cluster_cfg['cluster']['docker-registry']['prefix'] }}alertmanager:{{ cluster_cfg['cluster']['docker-registry']['tag'] }} + imagePullPolicy: Always args: - '--config.file=/etc/alertmanager/config.yml' - '--storage.path=/alertmanager' From c2f07e4a2a83cd02a1aa75912228e050d1923d2f Mon Sep 17 00:00:00 2001 From: yutingjiang Date: Fri, 28 Nov 2025 02:47:00 +0000 Subject: [PATCH 6/6] update build all ci --- .github/workflows/build-all.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-all.yaml b/.github/workflows/build-all.yaml index e0f3937f..020ba918 100644 --- a/.github/workflows/build-all.yaml +++ b/.github/workflows/build-all.yaml @@ -5,7 +5,9 @@ permissions: on: push: - branches: ['release/*'] + branches: ["release/*"] + pull_request: + branches: ["release/*"] release: types: [published] workflow_dispatch: