【问题标题】:List all Jenkins builds grouped by node列出按节点分组的所有 Jenkins 构建
【发布时间】: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。
  • 嗨!我该如何解决这个问题?

标签: jenkins groovy build


【解决方案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://stackoverflow.com/a/30909035/5374189的修改答案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    相关资源
    最近更新 更多