我正在将Jenkins 2的自由式工作转换为Groovy的管道工作,我很少有经验。我不能为我的生活弄清楚如何让参数在里面运行Groovy。这是脚本的重要部分;
stage ('Clean') {
try {
notifyBuild('STARTED')
dir("cloudformation") {
def list = sh(script: "ls -1 *.template", returnStdout: true)
for (i in list) {
sh "aws s3 cp $i s3://URLHERE —expires 1 —cache-control 1"
}
} } catch (e) {
// If there was an exception thrown, the build failed
currentBuild.result = "FAILED"
throw e
} finally {
// Success or failure, always send notifications
notifyBuild(currentBuild.result)
} }
相关位为sh "aws s3 cp $i s3://URLHERE —expires 1 —cache-control 1"
。试图运行它会返回以下错误;
[cloudformation] Running shell script
+ aws s3 cp e s3://URLHERE —expires 1 —cache-control 1
Unknown options: —expires,1,—cache-control,1
Google在Groovy内部使用参数创建了很少的shell脚本。显然它正试图将每个空间划分的块作为它自己的位来处理;我该如何阻止这种行为?
编辑添加:
我已经尝试了sh "aws s3 cp $i s3://URLHERE '—expires 1' '—cache-control 1'"
然后使用Unknown options: —expires 1,—cache-control 1
返回相同的错误,所以我得到了我可以通过适当引用来包含空格,但这仍然留下了潜在的问题。