2015-09-30 49 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 –

相關問題