如何获取运行在特定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
相关产品推荐
相关产品推荐

