首页 > 解决方案 > 无限数组作为 Jenkins 参数

问题描述

我正在尝试创建一个 Jenkins 作业,其中 Job 遍历一组值。数组项的数量不固定,在后续构建中可能会有所不同。

例如,我的工作遍历以下一组数组值:

服务器名称:server1.example.com IP:1.1.1.1 用户:Homer

服务器名称:server2.example.com IP:2.2.2.2 用户:Bart

.

.

服务器名称:serverN.example.com IP:xxxx 用户:Ned

该作业使用值 {ServerName: server1.example.com, IP: 1.1.1.1, user: Homer} 运行它的第一次迭代,使用值 {ServerName: server2.example.com, IP: 2.2.2.2, user: Bart 运行第二次迭代} 等到 N 次迭代。

这里,重要的一点是 N 不是固定的。

我查看了 JSON/groovy 的扩展选择参数,但找不到解决数组项数量变化问题的解决方案。

是否有可以在这种情况下使用的插件,如果有,正确的用法是什么?

标签: jenkinsjenkins-pluginsjenkins-groovy

解决方案


我使用String Parameterand 在我的管道脚本中,我使用一个script块来拆分字符串,默认情况下它在换行符或空格上拆分,这就是我所需要的。看起来您需要一个特殊的拆分字符,请注意 groovy 支持用于拆分的正则表达式,如此处所示。也许你可以使用一个|角色并对其进行拆分,

"{ServerName: server.example.com, IP: 1.1.1.1, user: Bart1}|{ServerName: server2.example.com, IP: 2.2.2.2, user: Bart2}"

然后你可以做

script {
    def list = "${StringParamName}".split('|')

    // Can NOT use `for (var_item in list)` because of NotSerializableException
    for (int i = 0; i < list.size(); i++) {
        def item = list[i]
        // Do work with "${item}"
    }
}

推荐阅读