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

Jenkins如何获取多级下游任务的构建信息

Jenkins跨多级下游任务获取构建信息的实现方案

以下为三种可落地的实现方案,可根据实际业务场景选择:

方案1:Job B同步阻塞触发Job C(优先推荐,实现成本最低)

  • 修改Job B中触发Job C的逻辑,使用Jenkins内置build步骤,开启阻塞等待Job C执行完成配置,Job C运行结束后直接通过返回的构建对象拉取所有需要的信息,包括构建号、运行状态、构建URL、构建参数、日志片段等。
  • Job A的构建信息可由A触发B时作为入参传递给B,Job B自身的构建信息可直接调用内置变量currentBuild获取,三类信息收集完成后,在Job B的后置步骤直接调用邮件插件完成发送即可。
    Pipeline示例代码片段:
// Job B Pipeline中触发Job C的逻辑
def jobCBuild = build job: 'Job C', wait: true, propagate: false
// 拉取Job C的构建信息
def jobCInfo = [
  status: jobCBuild.getResult(),
  buildNumber: jobCBuild.getNumber(),
  url: jobCBuild.getAbsoluteUrl(),
  duration: jobCBuild.getDurationString()
]

方案2:参数透传+后置回调(适用于Job C运行时间较长的场景)

  • Job A触发Job B时,将自身构建号、状态、URL等信息作为参数传入Job B;Job B触发Job C时,将Job A、Job B的所有构建信息全部作为参数透传给Job C。
  • 若允许在Job C侧发邮件,直接在Job C的后置步骤整合三类信息发送即可;若要求必须由Job B发邮件,可在Job C执行完成后调用Jenkins API回调Job B的通知接口,将自身构建信息回传给B,由B完成邮件发送。

方案3:构建记录匹配查询(适用于无法修改Job C配置的场景)

  • Job B触发Job C后,记录触发的时间戳,通过轮询Jenkins API的方式查询Job C的构建记录,筛选出触发时间晚于触发时间、且上游触发者为当前Job B构建实例的记录,匹配成功后即可拉取到对应的Job C构建信息。
    核心查询逻辑代码示例:
import jenkins.model.Jenkins
import hudson.model.Cause

def triggerTime = currentBuild.startTimeInMillis
def jobC = Jenkins.instance.getItemByFullName('你的Job C完整路径')
def targetCBuild = jobC.builds.find { build ->
  build.getTimeInMillis() > triggerTime && 
  build.getCause(Cause.UpstreamCause.class)?.upstreamBuild == currentBuild.number
}

注意:使用方案3时需要确保Job B同一时间不会触发多次Job C,避免出现匹配冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:15:04