固定 Jenkins Job 部署环境
This commit is contained in:
Vendored
+40
-18
@@ -106,15 +106,37 @@ def previousAutoBuildState(def previousBuild, List<String> allowedServices) {
|
||||
}
|
||||
|
||||
def environmentChoicesForJob(String jobBaseName) {
|
||||
return jobBaseName == 'backend-java-dev'
|
||||
? ['development', 'test', 'staging', 'production']
|
||||
: ['test', 'development', 'staging', 'production']
|
||||
return [fixedEnvironmentForJob(jobBaseName) ?: 'test']
|
||||
}
|
||||
|
||||
def downstreamJobPrefixForJob(String jobBaseName) {
|
||||
return jobBaseName == 'backend-java-dev'
|
||||
? 'baiyue-firstleg-dev-'
|
||||
: 'baiyue-firstleg-'
|
||||
def fixedEnvironmentForJob(String jobBaseName) {
|
||||
switch (jobBaseName) {
|
||||
case 'backend-java-dev':
|
||||
return 'development'
|
||||
case 'backend-java':
|
||||
return 'test'
|
||||
case 'backend-java-prod':
|
||||
return 'production'
|
||||
default:
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
def fixedDownstreamJobPrefixForJob(String jobBaseName) {
|
||||
switch (jobBaseName) {
|
||||
case 'backend-java-dev':
|
||||
return 'baiyue-firstleg-dev-'
|
||||
case 'backend-java':
|
||||
return 'baiyue-firstleg-'
|
||||
case 'backend-java-prod':
|
||||
return 'baiyue-firstleg-prod-'
|
||||
default:
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
def downstreamJobPrefixChoicesForJob(String jobBaseName) {
|
||||
return [fixedDownstreamJobPrefixForJob(jobBaseName) ?: 'baiyue-firstleg-']
|
||||
}
|
||||
|
||||
pipeline {
|
||||
@@ -150,7 +172,7 @@ pipeline {
|
||||
booleanParam(name: 'SKIP_TESTS', defaultValue: false, description: '是否跳过测试;生产构建不建议勾选')
|
||||
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 基础镜像')
|
||||
string(name: 'DOWNSTREAM_JOB_PREFIX', defaultValue: downstreamJobPrefixForJob(env.JOB_BASE_NAME), description: '单服务 Jenkins Job 名称前缀;开发总控自动使用 dev 专属 Job')
|
||||
choice(name: 'DOWNSTREAM_JOB_PREFIX', choices: downstreamJobPrefixChoicesForJob(env.JOB_BASE_NAME), description: '由当前总控 Job 固定的单服务 Job 前缀')
|
||||
}
|
||||
|
||||
stages {
|
||||
@@ -158,11 +180,15 @@ pipeline {
|
||||
agent { label 'java-builder' }
|
||||
steps {
|
||||
script {
|
||||
// 开发环境总控 Job 固定部署到 development,避免首次构建沿用 ENVIRONMENT 的默认 test 值。
|
||||
// 其他 Job(包括现有 backend-java 测试环境)仍完全沿用原有参数。
|
||||
String resolvedEnvironment = env.JOB_BASE_NAME == 'backend-java-dev'
|
||||
? 'development'
|
||||
: params.ENVIRONMENT
|
||||
String resolvedEnvironment = fixedEnvironmentForJob(env.JOB_BASE_NAME)
|
||||
String resolvedJobPrefix = fixedDownstreamJobPrefixForJob(env.JOB_BASE_NAME)
|
||||
if (!resolvedEnvironment || !resolvedJobPrefix) {
|
||||
error("未配置总控 Job ${env.JOB_BASE_NAME} 的固定部署环境,拒绝继续")
|
||||
}
|
||||
if (params.ENVIRONMENT != resolvedEnvironment ||
|
||||
params.DOWNSTREAM_JOB_PREFIX?.trim() != resolvedJobPrefix) {
|
||||
echo "忽略外部传入的环境或 Job 前缀;${env.JOB_BASE_NAME} 固定使用 ${resolvedEnvironment} / ${resolvedJobPrefix}"
|
||||
}
|
||||
env.RESOLVED_ENVIRONMENT = resolvedEnvironment
|
||||
echo "Job ${env.JOB_BASE_NAME} 使用部署环境: ${env.RESOLVED_ENVIRONMENT}"
|
||||
|
||||
@@ -176,11 +202,7 @@ pipeline {
|
||||
echo "${env.RESOLVED_ENVIRONMENT} 环境使用共享镜像仓库: ${requestedRepository}"
|
||||
env.RESOLVED_IMAGE_REPOSITORY = requestedRepository
|
||||
|
||||
String jobPrefix = params.DOWNSTREAM_JOB_PREFIX?.trim()
|
||||
if (!jobPrefix) {
|
||||
error('DOWNSTREAM_JOB_PREFIX 不能为空')
|
||||
}
|
||||
env.RESOLVED_JOB_PREFIX = jobPrefix
|
||||
env.RESOLVED_JOB_PREFIX = resolvedJobPrefix
|
||||
env.DATABASE_CHANGE_DETECTED = 'false'
|
||||
if (env.RESOLVED_ENVIRONMENT == 'production' && params.SKIP_TESTS) {
|
||||
error('生产环境禁止跳过测试')
|
||||
|
||||
Reference in New Issue
Block a user