fix(ci): video-server 仅在 release/next 构建,master 不触发
问题:CORE_SERVICES 包含 video-server,master 构建时尝试构建
但代码只在 release/next,会导致 master 构建失败
修复:
- 引入 ACTIVE_SERVICES 根据分支动态设置服务列表
- master: 不含 video-server
- release/next: 含 video-server
- detectServicesToBuild 使用 ACTIVE_SERVICES 代替 CORE_SERVICES
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
20
Jenkinsfile
vendored
20
Jenkinsfile
vendored
@@ -75,25 +75,30 @@ pipeline {
|
||||
echo "Workspace: ${env.WORKSPACE}"
|
||||
echo "Start Time: ${new Date()}"
|
||||
echo "=========================================="
|
||||
|
||||
// 根据分支选择部署目标
|
||||
|
||||
// 根据分支选择部署目标和服务列表
|
||||
if (env.BRANCH_NAME == 'release/next') {
|
||||
env.DEPLOY_HOST = env.RELEASE_DEPLOY_HOST
|
||||
env.DEPLOY_PATH = env.RELEASE_DEPLOY_PATH
|
||||
env.COMPOSE_FILE = 'docker-compose.release.yml'
|
||||
env.CONTAINER_NAME_SUFFIX = '-release'
|
||||
// Release 分支包含 video-server
|
||||
env.ACTIVE_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'
|
||||
echo "📦 Deploy target: RELEASE (${env.DEPLOY_HOST}) using ${env.COMPOSE_FILE}"
|
||||
} else if (env.BRANCH_NAME == 'master') {
|
||||
env.DEPLOY_HOST = env.PROD_DEPLOY_HOST
|
||||
env.DEPLOY_PATH = env.PROD_DEPLOY_PATH
|
||||
env.COMPOSE_FILE = 'docker-compose.core.yml'
|
||||
env.CONTAINER_NAME_SUFFIX = ''
|
||||
// Master 分支不包含 video-server(代码未同步)
|
||||
env.ACTIVE_SERVICES = 'viewsh-gateway,viewsh-module-system-server,viewsh-module-infra-server,viewsh-module-iot-server,viewsh-module-iot-gateway,viewsh-module-ops-server'
|
||||
echo "📦 Deploy target: PRODUCTION (${env.DEPLOY_HOST}) using ${env.COMPOSE_FILE}"
|
||||
} else {
|
||||
// 防呆:未知分支不允许部署,避免 BRANCH_NAME 缺失时误伤
|
||||
env.DEPLOY_HOST = ''
|
||||
env.COMPOSE_FILE = ''
|
||||
env.CONTAINER_NAME_SUFFIX = ''
|
||||
env.ACTIVE_SERVICES = env.CORE_SERVICES // 其他分支用默认列表
|
||||
echo "⚠️ Unknown branch '${env.BRANCH_NAME}' — build only, no deploy"
|
||||
}
|
||||
|
||||
@@ -580,8 +585,11 @@ def checkIfDepsChanged(List<String> changedFiles) {
|
||||
|
||||
// 检测需要构建的服务
|
||||
def detectServicesToBuild(List<String> changedFiles) {
|
||||
// 使用分支对应的服务列表(master 不含 video-server)
|
||||
def activeServices = env.ACTIVE_SERVICES ?: env.CORE_SERVICES
|
||||
|
||||
if (changedFiles.contains('all')) {
|
||||
return env.CORE_SERVICES
|
||||
return activeServices
|
||||
}
|
||||
|
||||
def triggerAllFiles = ['pom.xml', 'viewsh-framework', 'viewsh-dependencies', 'Jenkinsfile', 'docker/']
|
||||
@@ -590,11 +598,11 @@ def detectServicesToBuild(List<String> changedFiles) {
|
||||
changedFile.startsWith(triggerFile) || changedFile == triggerFile
|
||||
}
|
||||
}) {
|
||||
return env.CORE_SERVICES
|
||||
return activeServices
|
||||
}
|
||||
|
||||
def changedServices = []
|
||||
def allServices = env.CORE_SERVICES.split(',')
|
||||
def allServices = activeServices.split(',')
|
||||
|
||||
allServices.each { service ->
|
||||
def modulePath = getModulePathForService(service)
|
||||
@@ -605,7 +613,7 @@ def detectServicesToBuild(List<String> changedFiles) {
|
||||
}
|
||||
}
|
||||
|
||||
return changedServices.isEmpty() ? env.CORE_SERVICES : changedServices.join(',')
|
||||
return changedServices.isEmpty() ? activeServices : changedServices.join(',')
|
||||
}
|
||||
|
||||
// 检查依赖镜像是否存在
|
||||
|
||||
Reference in New Issue
Block a user