feat(ci): Jenkinsfile 添加 video-server 构建
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled

变更:
- 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:
lzh
2026-04-29 11:13:38 +08:00
parent 4a8641571f
commit 44bb89dbca

24
Jenkinsfile vendored
View File

@@ -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)
}