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、ABORTEDgetJob().getName():获取上游构建所属的Job名称,用于精准匹配目标JobBgetNumber():获取上游构建的编号,可用于追溯具体构建记录
触发器配置确认
确保JobC的构建触发器配置符合需求:
- 选择「Build after other projects are built」
- 触发源填入
JobB - 勾选「Trigger regardless of build result」(保证JobB无论执行结果如何都能触发JobC)
内容的提问来源于stack exchange,提问作者LearningSelenium
相关产品推荐
相关产品推荐

