我想在Jenkins中配置一个选择参数。
我想配置的参数叫做CIDR。
我尝试使用“扩展选择参数”插件,但无济于事。
我正在尝试做的是让用户手动插入所选的CIDR,考虑到已经在使用的CIDR,>我想运行一个groovy脚本,用已经在使用的CIDR填充字符串描述。
为了列出已经在使用的CIDR,我编写了以下Groovy代码:
#!/usr/local/bin/groovy
def p = ['/usr/local/bin/aws', 'ec2', 'describe-vpcs'].execute() | 'grep CidrBlock'.execute() | ['awk', '{print $2}'].execute() | ['tr', '-d', '"\\"\\|,"'].execute()
p.waitFor()
println p.text
脚本在终端中正常运行:
itai@Itais-MacBook-Pro ~ - $ groovy cidrs.groovy
172.31.0.0/16
172.51.0.0/16
172.51.0.0/16
我甚至在Jenkins脚本批准中接受了可疑签名,以允许脚本运行。
但是当我将它插入字符串描述的Groovy脚本部分并运行“使用参数构建作业”时,字符串下拉列表保持为空。
我做错了什么?
答案 0 :(得分:0)
看起来很琐碎。请尝试以下。
更改自:
println p.text
要强>
return p.text
答案 1 :(得分:0)
参数保持为空的原因在于,“扩展选择参数”插件期望输出为数组。
将脚本更改为以下代码解决了问题:
#!/opt/groovy-2.4.12/bin/groovy
def p = ['/usr/bin/aws', 'ec2', 'describe-vpcs'].execute() | 'grep CidrBlock'.execute() | ['awk', '{print $2}'].execute() | ['tr', '-d', '"\\"\\|,"'].execute()
p.waitFor()
def output = []
p.text.eachLine { line ->
output << line
}
output.each {
println it
}
现在,参数将填充可用的CIDR。