chore: update Jenkins deploy pipeline controls

This commit is contained in:
2026-04-24 11:59:42 +08:00
parent 2680662003
commit f63331a1b9
4 changed files with 46 additions and 26 deletions

View File

@@ -24,6 +24,7 @@ pipeline {
steps {
script {
// 部署流水线允许手动启动;如存在上游触发原因,则继续执行上游作业名门禁。
// Pipeline 的 build 步骤通常会把下游触发原因记录成 BuildUpstreamCause
// 直接只查经典 UpstreamCause 会把真实的上游触发误判成“人工执行”。
def pipelineUpstreamCauses = currentBuild.getBuildCauses('org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause')
@@ -36,10 +37,6 @@ pipeline {
upstreamCause = classicUpstreamCauses[0]
}
if (!upstreamCause) {
error('部署流水线禁止人工直接执行,只允许由上游构建并部署流水线触发。')
}
def actualUpstreamJob = upstreamCause?.upstreamProject ?: ''
def expectedUpstreamJob = params.EXPECTED_UPSTREAM_JOB?.trim()
def allowedUpstreamJob = env.GENARRATIVE_ALLOWED_UPSTREAM_JOB?.trim()
@@ -56,19 +53,19 @@ pipeline {
error('SOURCE_NODE_NAME 不能为空。')
}
if (!actualUpstreamJob?.trim()) {
if (upstreamCause && !actualUpstreamJob?.trim()) {
error('无法从上游触发原因中解析作业名,请检查 Jenkins Pipeline Build Step 插件版本与触发链。')
}
if (expectedUpstreamJob && actualUpstreamJob != expectedUpstreamJob) {
if (actualUpstreamJob && expectedUpstreamJob && actualUpstreamJob != expectedUpstreamJob) {
error("上游作业校验失败,期望 ${expectedUpstreamJob},实际 ${actualUpstreamJob}")
}
if (allowedUpstreamJob && actualUpstreamJob != allowedUpstreamJob) {
if (actualUpstreamJob && allowedUpstreamJob && actualUpstreamJob != allowedUpstreamJob) {
error("环境门禁校验失败,仅允许 ${allowedUpstreamJob} 触发,实际 ${actualUpstreamJob}")
}
env.UPSTREAM_JOB_NAME = actualUpstreamJob
env.UPSTREAM_JOB_NAME = actualUpstreamJob ?: 'MANUAL'
}
}
}