From 44bb89dbca87c691d83393f53c5d9ea4806036a5 Mon Sep 17 00:00:00 2001 From: lzh Date: Wed, 29 Apr 2026 11:13:38 +0800 Subject: [PATCH] =?UTF-8?q?feat(ci):=20Jenkinsfile=20=E6=B7=BB=E5=8A=A0=20?= =?UTF-8?q?video-server=20=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 变更: - CORE_SERVICES 添加 viewsh-module-video-server - getModulePathForService 添加 video 模块路径 - sortServicesByDependency video 排在 ops 之后 - getContainerNameForService 添加 aiot-video-server 映射 - Release 部署时同步 zlm-config-release.ini 到部署机 性能优化: - video-server 构建与其他服务并行(Maven 缓存卷) - 部署时 Docker Compose 自动拉取 ZLM 官方镜像 - ZLM 不在 CORE_SERVICES 中,不触发构建 Co-Authored-By: Claude Opus 4.7 --- Jenkinsfile | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 13d70962..43c0f555 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -27,7 +27,7 @@ pipeline { DEPS_IMAGE = "${REGISTRY}/aiot-deps:latest" // 服务配置 - CORE_SERVICES = 'viewsh-gateway,viewsh-module-system-server,viewsh-module-infra-server,viewsh-module-iot-server,viewsh-module-iot-gateway,viewsh-module-ops-server' + CORE_SERVICES = 'viewsh-gateway,viewsh-module-system-server,viewsh-module-infra-server,viewsh-module-iot-server,viewsh-module-iot-gateway,viewsh-module-ops-server,viewsh-module-video-server' // 部署配置常量(Initialize 阶段根据分支选择具体目标,DEPLOY_HOST/PATH 不在 environment 块声明, // 避免 Jenkins declarative environment 的 readonly 行为导致 script 块里的赋值不生效, @@ -346,6 +346,19 @@ pipeline { echo "📂 Syncing ${env.COMPOSE_FILE} to deploy host..." sh "scp -o StrictHostKeyChecking=no -i ${env.SSH_KEY} ${env.COMPOSE_FILE} root@${env.DEPLOY_HOST}:${env.DEPLOY_PATH}/" + // Release 环境额外同步 ZLM 配置文件 + if (env.BRANCH_NAME == 'release/next') { + echo "📂 Syncing ZLM config to deploy host..." + sh """ + ssh -o StrictHostKeyChecking=no -i ${env.SSH_KEY} root@${env.DEPLOY_HOST} \ + "mkdir -p ${env.DEPLOY_PATH}/docker-compose" + + scp -o StrictHostKeyChecking=no -i ${env.SSH_KEY} \ + docker-compose/zlm-config-release.ini \ + root@${env.DEPLOY_HOST}:${env.DEPLOY_PATH}/docker-compose/zlm-config-release.ini + """ + } + try { // 串行部署(保证依赖关系) sortedServices.each { service -> @@ -1117,7 +1130,8 @@ def sortServicesByDependency(def services) { 'viewsh-module-infra-server', 'viewsh-module-iot-server', 'viewsh-module-iot-gateway', - 'viewsh-module-ops-server' + 'viewsh-module-ops-server', + 'viewsh-module-video-server' // video 依赖 ops,排在最后 ] return services.sort { a, b -> @@ -1134,7 +1148,8 @@ def getContainerNameForService(String service, String suffix) { 'viewsh-module-infra-server': 'aiot-infra-server', 'viewsh-module-iot-server': 'aiot-iot-server', 'viewsh-module-iot-gateway': 'aiot-iot-gateway', - 'viewsh-module-ops-server': 'aiot-ops-server' + 'viewsh-module-ops-server': 'aiot-ops-server', + 'viewsh-module-video-server': 'aiot-video-server' ] return map.get(service, "aiot-${service}") + (suffix ?: '') } @@ -1148,7 +1163,8 @@ def getModulePathForService(String service) { 'viewsh-module-infra-server': 'viewsh-module-infra/viewsh-module-infra-server', 'viewsh-module-iot-server': 'viewsh-module-iot/viewsh-module-iot-server', 'viewsh-module-iot-gateway': 'viewsh-module-iot/viewsh-module-iot-gateway', - 'viewsh-module-ops-server': 'viewsh-module-ops/viewsh-module-ops-server' + 'viewsh-module-ops-server': 'viewsh-module-ops/viewsh-module-ops-server', + 'viewsh-module-video-server': 'viewsh-module-video/viewsh-module-video-server' ] return map.get(service, service) }