【发布时间】:2018-06-06 13:40:45
【问题描述】:
$ groovy --version
Groovy Version: 2.4.15 JVM: 1.8.0_171 Vendor: Oracle Corporation OS: Mac OS X
我想在 Groovy 中执行一些 AWS CLI 命令,当然最终在 Jenkinsfile 中运行。
但对于原型设计,我想在我的 Mac 上对其进行编码,并将其作为一个普通的 Groovy 脚本执行。例如,我有这个。
#!/usr/bin/env groovy
def getEBSVolumes(awsRegion) {
def regions
if (awsRegion == "all") {
regions = sh(returnStdout: true, script: """#!/usr/bin/env bash
aws ec2 describe-regions --output text|awk '{print \$3}'
"""
)
}
else {
regions = awsRegion
}
echo "Regions: regions"
}
getEBSVolumes("all")
当我执行它时,我得到
$ ./x.groovy
Caught: groovy.lang.MissingMethodException: No signature of method: x.sh() is applicable for argument types: (java.util.LinkedHashMap) values: [[returnStdout:true, script:#!/usr/bin/env bash
aws ec2 describe-regions --output text|awk '{print $3}'
]]
Possible solutions: use([Ljava.lang.Object;), is(java.lang.Object), run(), run(), any(), each(groovy.lang.Closure)
groovy.lang.MissingMethodException: No signature of method: x.sh() is applicable for argument types: (java.util.LinkedHashMap) values: [[returnStdout:true, script:#!/usr/bin/env bash
aws ec2 describe-regions --output text|awk '{print $3}'
]]
Possible solutions: use([Ljava.lang.Object;), is(java.lang.Object), run(), run(), any(), each(groovy.lang.Closure)
at x.getEBSVolumes(x.groovy:9)
at x$getEBSVolumes.callCurrent(Unknown Source)
at x.run(x.groovy:20)
有人可以解释一下神秘的错误信息吗?谢谢!
注意代码在 Jenkinsfile 中执行时有效,因此我专门询问了 CLI Groovy。
【问题讨论】: