Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy 如何从排队作业中检索生成参数?_Groovy_Jenkins - Fatal编程技术网

Groovy 如何从排队作业中检索生成参数?

Groovy 如何从排队作业中检索生成参数?,groovy,jenkins,Groovy,Jenkins,我想编写一个系统groovy脚本,它检查Jenkins中排队的作业,并提取作业调度时提供的构建参数(以及构建原因)。想法 具体而言: def q = Jenkins.instance.queue q.items.each { println it.task.name } 检索排队的项目。我一辈子都搞不清楚构建参数在哪里 我得到的最接近的结果是: def q = Jenkins.instance.queue q.items.each { println("${it.task.name}:"

我想编写一个系统groovy脚本,它检查Jenkins中排队的作业,并提取作业调度时提供的构建参数(以及构建原因)。想法

具体而言:

def q = Jenkins.instance.queue
q.items.each { println it.task.name }
检索排队的项目。我一辈子都搞不清楚构建参数在哪里

我得到的最接近的结果是:

def q = Jenkins.instance.queue
q.items.each { 
  println("${it.task.name}:")
  it.task.properties.each { key, val ->
    println("  ${key}=${val}")
  }
}
这让我明白:

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
  ...
队列元素本身的params属性包含一个字符串,该字符串的参数采用属性文件格式--
key=value
,多个参数之间用换行符分隔

def q = Jenkins.instance.queue
q.items.each { 
  println("${it.task.name}:")
  println("Parameters: ${it.params}")
}
收益率:

dbacher params:
Parameters: 
MyParameter=Hello world
BoolParameter=true
我不是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"
  }
}
showProps
函数显示队列元素具有另一个名为causes的属性,您需要对该属性进行更多解码:

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

太好了。检查groovy东西的“诀窍”应该有自己的问答对,真的。非常有用。很遗憾,这不是一张真实的地图,但是,呃,我会尽我所能。添加了一个要点,让你的把戏更容易被发现: