You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins中无需传参,如何在下游流水线获取上游调用流水线信息?

在Jenkins下游流水线中获取上游触发作业名称(无需显式传参)

你可以通过Jenkins流水线原生提供的currentBuild对象或内置环境变量,直接在下游作业中获取上游触发作业的名称,完全不需要上游显式传参,以下是两种可行方案:

方案一:利用currentBuild.upstreamBuilds获取

在Downstream_Job.groovy中添加以下代码:

// 检查是否存在上游构建触发
if (currentBuild.upstreamBuilds) {
    // 取第一个上游构建对应的作业名称
    def upstreamJobName = currentBuild.upstreamBuilds[0].projectName
    println "触发当前作业的上游作业名称:${upstreamJobName}"
} else {
    println "当前作业未被上游流水线触发"
}

currentBuild.upstreamBuilds是Jenkins内置的列表对象,会自动记录所有触发当前构建的上游构建信息,直接调用projectName就能拿到上游作业的名称,无需上游做任何额外配置。

方案二:通过BUILD_CAUSE系列环境变量获取

当作业被上游流水线触发时,Jenkins会自动生成BUILD_CAUSE_UPSTREAMTRIGGER环境变量,格式为上游作业名称,上游构建编号,可以在下游解析这个变量拿到名称:

// 先判断环境变量是否存在(避免非上游触发时报错)
if (env.BUILD_CAUSE_UPSTREAMTRIGGER) {
    def upstreamJobName = env.BUILD_CAUSE_UPSTREAMTRIGGER.split(',')[0]
    println "触发当前作业的上游作业名称:${upstreamJobName}"
}

为什么之前的env传递方法无效?

每个Jenkins作业的环境变量作用域是独立的,上游作业中设置的env变量不会自动传递到下游作业,即便文档提到REST API可访问,也需要额外调用API获取,远不如上述两种原生方法直接。

内容的提问来源于stack exchange,提问作者ooalgomaniac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 08:42:12