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

如何用Groovy获取build_job的master分支成功构建编号?

解决Jenkins Groovy脚本筛选master分支成功构建编号的问题

嘿,作为Groovy新手能写出这样的脚本已经很棒啦!你现在的问题是没有对构建的分支做筛选,所以拿到了所有分支的成功构建记录。下面给你两种可行的修改方案,帮你精准获取master分支的构建编号:

方案一:通过Git插件的分支动作获取分支名

这个方法依赖Jenkins的Git插件,大部分用Git管理代码的Jenkins环境都会安装它:

import hudson.model.*
import hudson.plugins.git.GitBranchAction

def builds = []
def job = jenkins.model.Jenkins.instance.getItem("build_job")

job.builds.each { build ->
    // 先判断构建结果是否为成功
    if (build.getResult() == Result.SUCCESS) {
        // 获取当前构建关联的分支动作
        def branchAction = build.getAction(GitBranchAction.class)
        if (branchAction != null) {
            def branchName = branchAction.getBranch().getName()
            // 只筛选master分支的构建
            if (branchName == "master") {
                builds.add(build.displayName[1..-1])
            }
        }
    }
}

// 去重并输出结果
builds.unique()
println "master分支成功构建编号:${builds}"

代码说明:

  • 导入GitBranchAction类,用来从构建中提取分支信息
  • 在判断构建成功后,先检查是否存在分支动作(避免非Git构建报错)
  • 对比分支名是否为master,符合条件才加入结果列表

方案二:通过构建环境变量获取分支名

如果你的Jenkins构建过程中会自动设置BRANCH_NAME环境变量(比如Pipeline或者Git插件默认配置),可以用更通用的方式:

import hudson.model.*

def builds = []
def job = jenkins.model.Jenkins.instance.getItem("build_job")

job.builds.each { build ->
    if (build.getResult() == Result.SUCCESS) {
        // 获取构建的环境变量
        def env = build.getEnvironment(null)
        def branchName = env.get("BRANCH_NAME")
        // 确保分支名存在且为master
        if (branchName != null && branchName == "master") {
            builds.add(build.displayName[1..-1])
        }
    }
}

builds.unique()
println "master分支成功构建编号:${builds}"

额外小提示:

  • 如果是在Jenkins Pipeline中运行脚本,可能需要调整脚本安全权限(比如在「脚本安全」中授权相关类)
  • 如果你只需要最新的master分支成功构建,不需要遍历所有构建的话,可以用job.getLastSuccessfulBuild()结合分支判断,效率会更高哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:26:00