feat(ci): Jenkinsfile 添加 video-server 构建
变更: - 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 <noreply@anthropic.com>
This commit is contained in:
24
Jenkinsfile
vendored
24
Jenkinsfile
vendored
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user