Jenkins矩阵参数有多个值?

时间:2014-10-06 14:23:02

标签: jenkins continuous-integration

作为自动化遗留部署过程的一部分,我尝试构建一个Jenkins管道,除其他操作外,还可以执行参数化构建。

其中之一是能够针对给定的服务列表执行多个命令。给出服务名称列表,例如

Mailer
Reporter
DbMigrator
...

等,我想对其中一些命令运行某些命令。

使用Extended Choice Parameter plugin,我能够从属性文件加载此列表,并将其显示为复选框列表,但是,我正在寻找一种方法可以构建一个"矩阵&#34 ;具有多个值的参数。我的目标是做这样的事情:

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

这样我就可以将几个值(Opt1和/或Opt2)应用于一个参数(例如Mailer)。

  1. 詹金斯有办法做到这一点吗? 或
  2. 有更好的方法吗?

1 个答案:

答案 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'