如何从排队的作业中检索构建参数?

Chr*_*tze 2 groovy jenkins

我想编写一个系统groovy脚本来检查Jenkins中的排队作业,并提取作为计划作业时提供的构建参数(以及构建原因作为奖励).想法?

特别:

def q = Jenkins.instance.queue
q.items.each { println it.task.name }
Run Code Online (Sandbox Code Playgroud)

检索排队的项目.我不能为我的生活找出构建参数所在的位置.

我最接近的是:

def q = Jenkins.instance.queue
q.items.each { 
  println("${it.task.name}:")
  it.task.properties.each { key, val ->
    println("  ${key}=${val}")
  }
}
Run Code Online (Sandbox Code Playgroud)

这让我知道了:

4.1.next-build-launcher:
  com.sonyericsson.jenkins.plugins.bfa.model.ScannerJobProperty$ScannerJobPropertyDescriptor@b299407=com.sonyericsson.jenkins.plugins.bfa.model.ScannerJobProperty@5e04bfd7
  com.chikli.hudson.plugin.naginator.NaginatorOptOutProperty$DescriptorImpl@40d04eaa=com.chikli.hudson.plugin.naginator.NaginatorOptOutProperty@16b308db
  hudson.model.ParametersDefinitionProperty$DescriptorImpl@b744c43=hudson.mod el.ParametersDefinitionProperty@440a6d81
  ...
Run Code Online (Sandbox Code Playgroud)

Dav*_*her 9

queue元素本身的params属性包含一个字符串,其中的参数采用属性文件格式 - key=value多个参数由换行符分隔.

def q = Jenkins.instance.queue
q.items.each { 
  println("${it.task.name}:")
  println("Parameters: ${it.params}")
}
Run Code Online (Sandbox Code Playgroud)

收益率:

dbacher params:
Parameters: 
MyParameter=Hello world
BoolParameter=true
Run Code Online (Sandbox Code Playgroud)

我不是Groovy专家,但在探索Jenkins脚本界面时,我发现以下函数非常有用:

def showProps(inst, prefix="Properties:") {
  println prefix
  for (prop in inst.properties) {
    def pc = ""
    if (prop.value != null) {
      pc = prop.value.class
    }
    println("  $prop.key : $prop.value ($pc)")
  }
}

def showMethods(inst, prefix="Methods:") {
  println prefix
  inst.metaClass.methods.name.unique().each { 
    println "  $it"
  }
}
Run Code Online (Sandbox Code Playgroud)

showProps函数显示队列元素具有另一个名为cause的属性,您需要对其进行更多解码:

causes : [hudson.model.Cause$UserIdCause@56af8f1c] (class java.util.Collections$UnmodifiableRandomAccessList)
Run Code Online (Sandbox Code Playgroud)