作为自动化遗留部署过程的一部分,我尝试构建一个Jenkins管道,除其他操作外,还可以执行参数化构建。
其中之一是能够针对给定的服务列表执行多个命令。给出服务名称列表,例如
Mailer
Reporter
DbMigrator
...
等,我想对其中一些命令运行某些命令。
使用Extended Choice Parameter plugin,我能够从属性文件加载此列表,并将其显示为复选框列表,但是,我正在寻找一种方法可以构建一个"矩阵&#34 ;具有多个值的参数。我的目标是做这样的事情:
| Service | Opt1| Opt2|
|------------------------|
| Mailer | [x] | [ ] |
| Reporter | [x] | [x] |
| DbMigrator | [ ] | [x] |
| ... | | |
这样我就可以将几个值(Opt1和/或Opt2)应用于一个参数(例如Mailer)。
答案 0 :(得分:2)
您可以尝试与更高版本的Jenkins捆绑在一起的matrix project plugin。
您可以添加几个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'"
}
这些也是矩阵中的过滤选项,用于限制各种组合。我试图让它从上面的'filter'属性评估(使用EnvInject和另一个groovy脚本创建环境变量),到目前为止没有成功,但你可以使用字符串
parm1=='Mailer' || parm2 = 'Opt2'