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

如何在Jenkins freestyle任务中获取触发它的上游pipeline名称

Jenkins Freestyle任务获取上游Pipeline名称解决方案

方案1:直接调用内置环境变量(单上游触发场景)

Jenkins在被上游任务触发时,会自动注入以下两个内置环境变量,无需额外配置或插件:

  • UPSTREAM_JOB_NAME:触发当前任务的上游Pipeline完整名称
  • UPSTREAM_BUILD_NUMBER:对应上游Pipeline的构建编号

你可以直接在freestyle任务的任意执行步骤中调用,比如在shell执行步骤中运行echo $UPSTREAM_JOB_NAME即可直接打印上游Pipeline名称。

方案2:通过构建原因读取(多上游触发场景)

如果当前freestyle任务存在多个上游触发源,需要动态判断实际触发的上游名称,可以通过系统Groovy脚本读取构建原因属性:

  1. 在freestyle任务中添加「Execute system Groovy script」步骤
  2. 填入以下代码:
// 读取上游触发原因
def upstreamCause = build.getCause(hudson.model.Cause.UpstreamCause)
if (upstreamCause) {
    // 获取上游任务名称和构建号
    def triggerPipelineName = upstreamCause.getUpstreamProject()
    def triggerBuildNum = upstreamCause.getUpstreamBuild()
    println "实际触发的上游Pipeline名称:${triggerPipelineName}"
    // 注入为环境变量供后续步骤调用
    build.addAction(new hudson.model.ParametersAction([
        new hudson.model.StringParameterValue("TRIGGER_PIPELINE", triggerPipelineName)
    ]))
}

后续所有步骤均可直接调用$TRIGGER_PIPELINE变量使用上游名称。

注意事项

  • 上述方案均要求上游Pipeline通过官方的「Trigger/call builds on other projects」步骤触发当前freestyle任务
  • 若上游触发时开启了参数传递,上游任务的所有自定义参数也会同步注入到当前freestyle任务的环境变量中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 06:15:03