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

关于Jenkins中getLastSuccessfulBuild将Unstable视为成功及2.277版本获取最后一次绿色构建的技术问询

Jenkins API 问题解答:getLastSuccessfulBuild行为与绿色构建获取

针对你在Jenkins 2.277版本遇到的两个问题,我整理了具体的原因和解决方案:

1. 为什么getLastSuccessfulBuild会把Unstable状态的构建视为成功?

这源于Jenkins对构建状态的核心定义逻辑:

  • 在Jenkins的状态体系里,UNSTABLE(即你提到的状态码6)属于构建完成但存在非致命问题(比如测试用例失败、代码检查警告)的范畴,和彻底失败的FAILURE(状态码4)是完全不同的层级。
  • 早期Jenkins的API设计中,getLastSuccessfulBuild()方法的“成功”定义包含了UNSTABLE状态——毕竟这类构建完成了全部执行流程,没有直接中断失败。但在2.277版本中,这个判断逻辑出现了调整,导致它和getLastUnstableBuild()返回了同一个构建实例,这确实是版本更新带来的行为变化。

2. Jenkins 2.277中如何获取真正的最后一次绿色(SUCCESS)构建?

既然默认API方法不再可靠,你可以通过遍历构建历史的方式,手动筛选出状态为SUCCESS(对应状态码5)的最近构建。这里提供两种场景的实现:

场景1:Jenkins脚本控制台使用(Groovy)

// 按作业全名获取目标作业
def targetJob = Jenkins.instance.getItemByFullName("Experiments/exp.Stability")
def lastGreenBuild = null

// 遍历构建历史,找到第一个状态为SUCCESS的构建
for (build in targetJob.builds) {
    if (build.result == hudson.model.Result.SUCCESS) {
        lastGreenBuild = build
        break
    }
}

// 输出结果
if (lastGreenBuild) {
    println "找到最后一次绿色构建:${lastGreenBuild.fullDisplayName}"
} else {
    println "当前作业无绿色构建记录"
}

场景2:Pipeline流水线中使用

pipeline {
    agent any
    stages {
        stage('获取绿色构建') {
            steps {
                script {
                    def targetJob = Jenkins.instance.getItemByFullName('Experiments/exp.Stability')
                    def lastGreenBuild = targetJob.builds.find { it.result == Result.SUCCESS }
                    
                    if (lastGreenBuild) {
                        echo "最后一次绿色构建:${lastGreenBuild.fullDisplayName}"
                        // 这里可以添加你的构建晋升逻辑
                    } else {
                        echo "未找到有效绿色构建"
                    }
                }
            }
        }
    }
}

注意事项:

  • 直接使用hudson.model.Result枚举(如Result.SUCCESS)比判断状态码更可靠,避免不同版本状态码可能的变动;
  • 如果你的Jenkins开启了安全限制,可能需要给脚本添加对应的权限才能访问作业构建历史。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 12:19:06