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

如何获取运行在特定Jenkins agent上的流水线构建记录列表

解决方案

方法1:使用Jenkins脚本控制台执行Groovy脚本查询

这是最灵活的查询方式,支持筛选节点、数量、pipeline归属等条件。

  • 进入Jenkins首页,点击左侧菜单栏的 Manage Jenkins -> Script Console
  • 粘贴以下Groovy脚本,替换对应参数后执行:
// 替换为你要查询的节点名称
def targetNodeName = "your-node-name"
// 替换为要返回的最大构建数量,设为0则返回全部
def maxBuildCount = 20
def matchedBuilds = []

try {
    Jenkins.instance.getItems(Job.class).each { job ->
        job.builds.each { build ->
            if (build.builtOnStr == targetNodeName) {
                matchedBuilds << [
                    jobName: job.fullName,
                    buildNumber: build.number,
                    buildStatus: build.result,
                    buildTime: build.getTime(),
                    buildUrl: build.absoluteUrl
                ]
                if (maxBuildCount > 0 && matchedBuilds.size() >= maxBuildCount) {
                    // 达到指定数量后终止遍历
                    throw new Exception("Stop iteration")
                }
            }
        }
    }
} catch(Exception e) {
    // 忽略终止遍历的异常
}

// 格式化输出结果
matchedBuilds.each { b ->
    println "任务名:${b.jobName} | 构建号:${b.buildNumber} | 状态:${b.buildStatus} | 构建时间:${b.buildTime} | 访问地址:${b.buildUrl}"
}

注意:如果是多分支pipeline等嵌套任务,你可以把getItems(Job.class)替换为getAllItems(Job.class)遍历所有层级的任务

方法2:调用Jenkins REST API 批量获取

如果你需要程序自动拉取数据,可以直接调用接口:

  • 首先获取节点的唯一标识,在节点详情页的URL可以拿到,通常格式为computer/节点名/
  • 调用接口获取关联构建:JENKINS_URL/computer/你的节点名/api/json?tree=builds[fullDisplayName,number,result,timestamp,url]&depth=1
    你可以添加max=数量参数限制返回的构建条数,返回结果为JSON格式,可直接解析使用

方法3:安装Node History Plugin扩展原生功能

如果需要长期在UI界面直接查看节点构建历史,可以安装官方的Node History插件:

  • 安装完成后刷新节点详情页,会自动新增专门的节点构建历史tab,默认展示该节点上执行过的所有构建记录,支持按状态、时间筛选。

你遇到原生Build History页面无数据的情况属于设计特性而非故障:原生页面仅展示当前节点作为控制器时的自有构建,不会展示代理节点上执行的任务构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:45:01