jenkins - 无限数组作为 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 的扩展选择参数,但找不到解决数组项数量变化问题的解决方案。
是否有可以在这种情况下使用的插件,如果有,正确的用法是什么?
解决方案
我使用String Parameter
and 在我的管道脚本中,我使用一个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}"
}
}
推荐阅读
- ruby-on-rails-4 - 在 bing search api 中获取 https 启用的 url
- algorithm - 检查图是否是二分的以及添加每条新边
- rest - 缓存复制 Ignite 中的问题
- c# - Api 控制器在反序列化时忽略 DataMember
- regex - 正则表达式允许 url 中的任何字符串
- c# - 以编程方式创建了本地数据库,但我无法在其中创建表?
- python - Scrapy Spider 跟踪 url,但不会导出数据
- r - 如何重塑数据以根据列值分析配对样本?
- c++ - 使用 C++ 编译错误
- angular - How to use ngx-translate for date DatePipe?