Groovy 如何从排队作业中检索生成参数?
我想编写一个系统groovy脚本,它检查Jenkins中排队的作业,并提取作业调度时提供的构建参数(以及构建原因)。想法 具体而言: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}:"
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东西的“诀窍”应该有自己的问答对,真的。非常有用。很遗憾,这不是一张真实的地图,但是,呃,我会尽我所能。添加了一个要点,让你的把戏更容易被发现: