列出按节点分组的所有 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 构建的主要内容,如果未能解决你的问题,请参考以下文章