列出按节点分组的所有 Jenkins 构建

Posted

技术标签:

【中文标题】列出按节点分组的所有 Jenkins 构建【英文标题】:List all Jenkins builds grouped by node 【发布时间】:2021-07-14 10:06:13 【问题描述】:

我想提取所有作业并按节点分组。这样做的目的是获得一个构建列表来运行脚本和删除构建。

这是我尝试在脚本上执行的:

def jobs = hudson.model.Hudson.instance.items
nodeName = 'YOUR_NODE_NAME'
jobs.each  job ->
  urls = []
  job.builds.each  build ->
    nodeName == build.builtOnStr && urls << build.absoluteUrl
  
  urls && println("$job.name\n\t$urls.sort().join('\n\t')")

我收到一个错误,我不知道为什么,这是错误:

groovy.lang.MissingPropertyException: No such property: builtOnStr for class: org.jenkinsci.plugins.workflow.job.WorkflowRun

提前致谢

【问题讨论】:

错误很明显。变量构建中的对象没有属性 buindOnStr。 嗨!我该如何解决这个问题? 【参考方案1】:

我遇到了同样的问题,我是这样解决的:

import java.text.SimpleDateFormat
import jenkins.model.Jenkins
import hudson.model.*

SimpleDateFormat dateTimeParser = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
def jobs = Jenkins.instance.getAllItems(org.jenkinsci.plugins.workflow.job.WorkflowJob)
def nodeName = build.getEnvironment(listener).get('NODE_NAME')
def daysAgo = build.getEnvironment(listener).get('DAYS_AGO').toInteger()
def limitDate = new Date().minus(daysAgo)

if (nodeName == "") 
  println("Node name can't be empty")
  return 1


jobs.each  job ->
  urls = []
  job.getBuilds().each  build ->
    if (build.getTime() > limitDate && build.getLog().contains(nodeName)) 
        urls << "$dateTimeParser.format(build.startTimeInMillis) | $build.absoluteUrl | $build.result"
      
    
    urls && println("$job.name\n$urls.sort().join('\n')")

我找不到收集节点标签的方法,我最终在日志中搜索它

这是来自https://***.com/a/30909035/5374189的修改答案

【讨论】:

以上是关于列出按节点分组的所有 Jenkins 构建的主要内容,如果未能解决你的问题,请参考以下文章

通过Jenkins作业后,工作节点上的进程没有被杀死

Jenkins奇技淫巧 — 全局变量篇

使用jenkins配置.net mvc网站自动构建

如何按年份进行分组?

Jenkins pipeline概念理解

jenkins~按模块进行构建