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

Jenkins声明式流水线中如何获取上游Job的构建状态

Jenkins声明式流水线获取上游Job构建状态方案

针对你遇到的问题——在JobC中获取触发它的JobB的构建状态,这里提供可行的解决方法:

核心思路:处理RunWrapper对象

你看到的org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper@1bc1b0b9是Jenkins封装的上游构建实例对象,调用它的内置方法就能提取构建状态等关键信息。

具体实现代码(JobC的Jenkinsfile)

pipeline {
    agent any
    stages {
        stage('获取JobB构建状态') {
            steps {
                script {
                    // 获取所有触发当前构建的上游实例
                    def upstreamBuilds = currentBuild.upstreamBuilds
                    if (upstreamBuilds) {
                        // 取第一个上游构建(因JobC由JobB触发,此处即为JobB的构建实例)
                        def jobBRun = upstreamBuilds[0]
                        
                        // 验证是否为目标JobB(避免多上游触发的混淆)
                        if (jobBRun.getJob().getName() == 'JobB') {
                            // 获取JobB的构建结果
                            def jobBStatus = jobBRun.getResult()
                            echo "JobB的构建状态:${jobBStatus}"
                            
                            // 根据状态执行后续业务逻辑
                            switch(jobBStatus) {
                                case 'SUCCESS':
                                    echo "JobB执行成功,启动成功分支操作"
                                    // 此处编写成功后的处理代码
                                    break
                                case 'FAILURE':
                                    echo "JobB执行失败,启动失败分支操作"
                                    // 此处编写失败后的处理代码
                                    break
                                case 'UNSTABLE':
                                    echo "JobB构建不稳定,启动对应处理逻辑"
                                    // 此处编写不稳定状态的处理代码
                                    break
                            }
                        } else {
                            echo "上游构建非目标JobB,跳过状态处理"
                        }
                    } else {
                        echo "未检测到触发当前构建的上游任务"
                    }
                }
            }
        }
        // 其他业务阶段...
    }
}

关键方法说明

  • getResult():返回上游构建的状态,常见取值包括SUCCESS、FAILURE、UNSTABLE、ABORTED
  • getJob().getName():获取上游构建所属的Job名称,用于精准匹配目标JobB
  • getNumber():获取上游构建的编号,可用于追溯具体构建记录

触发器配置确认

确保JobC的构建触发器配置符合需求:

  • 选择「Build after other projects are built」
  • 触发源填入JobB
  • 勾选「Trigger regardless of build result」(保证JobB无论执行结果如何都能触发JobC)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:53:19