From 9d09b77442713cfcdc100c48374f2068c6cd4b37 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Mon, 24 Aug 2026 17:23:05 +0800 Subject: [PATCH] fix(ci): bridge BOTH through legacy downstream choices --- Jenkinsfile | 5 ++++- Jenkinsfile.service | 2 +- scripts/controller-pipeline-contract.test.mjs | 1 + scripts/overseas-deployment-contract.test.mjs | 2 +- scripts/test-environment-pipeline-contract.test.mjs | 2 +- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 876d3edd3..e1c9c2258 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -243,7 +243,10 @@ pipeline { booleanParam(name: 'SKIP_TESTS', value: true), string(name: 'IMAGE_REPOSITORY', value: env.RESOLVED_IMAGE_REPOSITORY), string(name: 'DOCKER_BASE_IMAGE', value: params.DOCKER_BASE_IMAGE), - string(name: 'EVENT_BRIDGE_REGION', value: params.EVENT_BRIDGE_REGION) + // 旧下游 Job 的 ChoiceParameterDefinition 尚不接受 BOTH; + // 使用兼容值 SELECT 传递,下游新流水线会将其解释为双区域部署。 + string(name: 'EVENT_BRIDGE_REGION', value: + params.EVENT_BRIDGE_REGION == 'BOTH' ? 'SELECT' : params.EVENT_BRIDGE_REGION) ] ) downstreamResults[service] = downstreamBuild.result ?: 'UNKNOWN' diff --git a/Jenkinsfile.service b/Jenkinsfile.service index 1754277a4..fcdf1cbff 100644 --- a/Jenkinsfile.service +++ b/Jenkinsfile.service @@ -38,7 +38,7 @@ pipeline { choice(name: 'ENVIRONMENT', choices: ['test', 'development', 'staging', 'production'], description: '部署环境') booleanParam(name: 'DEPLOY', defaultValue: false, description: '构建成功后是否部署本服务') booleanParam(name: 'SKIP_TESTS', defaultValue: false, description: '是否跳过测试') - choice(name: 'EVENT_BRIDGE_REGION', choices: ['BOTH', 'CN', 'OVERSEAS'], description: '仅 event-bridge-service 使用;BOTH 在开发/测试环境同时部署国内和海外实例') + choice(name: 'EVENT_BRIDGE_REGION', choices: ['BOTH', 'CN', 'OVERSEAS', 'SELECT'], description: '仅 event-bridge-service 使用;BOTH 在开发/测试环境同时部署国内和海外实例;SELECT 为总控兼容值') string(name: 'IMAGE_REPOSITORY', defaultValue: '172.31.198.7:10082/java-project/baiyue-firstleg', description: '内网共享镜像仓库基础路径,不包含服务名和标签') string(name: 'DOCKER_BASE_IMAGE', defaultValue: '172.31.198.7:10082/java-project/eclipse-temurin:17-jre-alpine', description: '内网 Java 17 基础镜像') } diff --git a/scripts/controller-pipeline-contract.test.mjs b/scripts/controller-pipeline-contract.test.mjs index 221bade27..04d4a4303 100644 --- a/scripts/controller-pipeline-contract.test.mjs +++ b/scripts/controller-pipeline-contract.test.mjs @@ -46,4 +46,5 @@ test('coordinator defaults event bridge deployments to both non-production regio assert.match(pipeline, /\['BOTH', 'SELECT', 'CN', 'OVERSEAS'\]\.contains\(bridgeRegion\)/) assert.match(pipeline, /兼容旧 Jenkins 参数 SELECT:本次按 BOTH/) assert.match(pipeline, /事件桥 BOTH 仅支持开发或测试环境/) + assert.match(pipeline, /params\.EVENT_BRIDGE_REGION == 'BOTH' \? 'SELECT' : params\.EVENT_BRIDGE_REGION/) }) diff --git a/scripts/overseas-deployment-contract.test.mjs b/scripts/overseas-deployment-contract.test.mjs index 3e1b56683..3577c68a7 100644 --- a/scripts/overseas-deployment-contract.test.mjs +++ b/scripts/overseas-deployment-contract.test.mjs @@ -21,7 +21,7 @@ test('Jenkins pipelines recognize all overseas deployable modules', async () => assert.match(controller, /EVENT_BRIDGE_REGION/) assert.match(service, /EVENT_BRIDGE_REGION_OVERRIDE=\$\{bridgeRegion\}/) assert.match(controller, /choices: \['BOTH', 'CN', 'OVERSEAS'\]/) - assert.match(service, /choices: \['BOTH', 'CN', 'OVERSEAS'\]/) + assert.match(service, /choices: \['BOTH', 'CN', 'OVERSEAS', 'SELECT'\]/) assert.match(controller, /事件桥 BOTH 仅支持开发或测试环境/) }) diff --git a/scripts/test-environment-pipeline-contract.test.mjs b/scripts/test-environment-pipeline-contract.test.mjs index 7253c8914..d7897f09b 100644 --- a/scripts/test-environment-pipeline-contract.test.mjs +++ b/scripts/test-environment-pipeline-contract.test.mjs @@ -157,7 +157,7 @@ test('direct deployments wait for health and automatically restore the previous }) test('one event bridge build deploys both regional instances in development and test', () => { - assert.match(pipeline, /choice\(name: 'EVENT_BRIDGE_REGION', choices: \['BOTH', 'CN', 'OVERSEAS'\]/) + assert.match(pipeline, /choice\(name: 'EVENT_BRIDGE_REGION', choices: \['BOTH', 'CN', 'OVERSEAS', 'SELECT'\]/) assert.match(pipeline, /\['BOTH', 'SELECT'\]\.contains\(params\.EVENT_BRIDGE_REGION\)/) assert.match(pipeline, /\? \['CN', 'OVERSEAS'\]/) assert.match(pipeline, /bridgeRegions\.each \{ bridgeRegion ->/)