2014-10-06 35 views
1

作爲遺留部署過程自動化的一部分,我試圖構建一個Jenkins管道,可以在其他操作中執行參數化構建。詹金斯矩陣參數與多個值?

其中之一是能夠對指定的服務列表執行幾個命令。給出服務名稱列表,例如

Mailer 
Reporter 
DbMigrator 
... 

等等,我想運行某些命令針對其中的一些。

使用Extended Choice Parameter plugin,我能夠從屬性文件加載此列表,並將其顯示爲複選框列表,但是,我正在尋找一種方法來構建具有多個值的「矩陣」參數。我的目標是做這樣的事情:

| Service | Opt1| Opt2| 
|------------------------| 
| Mailer  | [x] | [ ] | 
| Reporter | [x] | [x] | 
| DbMigrator | [ ] | [x] | 
| ...  |  |  | 

所以,我可以申請多個值(選項1和/或OPT2)到一個參數(例如梅勒)。

  1. 詹金斯有沒有辦法做到這一點?
  2. 有沒有更好的方法來做到這一點?

回答

2

您可以嘗試matrix project plugin,它將與更高版本的Jenkins捆綁在一起。

您可以添加幾個groovy axis

,它允許你這樣做

import groovy.json.JsonSlurper 

def result = [] 

def inputFile = new File("/path/to/prop.json") 
def InputJSON = new JsonSlurper().parseText(inputFile.text) 
InputJSON.prop1.each{ result << it } 

return result 

與這種JSON

{ 
    "parm1": [ 
    "Mailer", 
    "Reporter", 
    "DbMigrator" 
    ], 
    "parm2": [ 
    "opt1", 
    "opt2" 
    ], 
    "filter": "parm1=='Mailer'" 
} 

這些也是在矩陣過濾選項限制爲各種組合。我試圖使它沒有成功評價,從上述(使用EnvInject和其他Groovy腳本創建一個環境變量)的「過濾器」屬性,那麼遠,但你可以使用一個字符串

parm1=='Mailer' || parm2 = 'Opt2' 
+0

哇,謝謝!我必須嘗試一下,如果這對我有用,我會告訴你! – 2014-10-06 22:57:55