试图运行一个groovy脚本来填充字符串的描述,但脚本没有返回输出,可能是什么原因?

时间:2017-11-22 10:01:11

标签: jenkins groovy parameters

我想在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脚本部分并运行“使用参数构建作业”时,字符串下拉列表保持为空。

我做错了什么?

2 个答案:

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