2015-09-30 24 views
1

我想编写一个系统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.pl[email protected]b29940[email protected]5e04bfd7 
    com.chikli[email protected]40d0[email protected]16b308db 
    [email protected]=hudson.mod [email protected] 
    ... 

回答

7

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的专家,但探索詹金斯脚本界面时,我发现了以下功能是非常有帮助的:

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 : [[email protected]] (class java.util.Collections$UnmodifiableRandomAccessList) 
+0

太棒了。真正地,检查常规事物的“窍门”应该是它自己的问题/答案对。很有帮助。 –

+0

很遗憾,这不是一张真实的地图,但是,呃,我会拿我能得到的。 –

+0

添加了一个要点,使您的技巧更容易发现:https://gist.github.com/cg-soft/4251ad83932340129925 –

相关问题