如何使用参数

时间:2016-12-02 19:01:41

标签: jenkins groovy amazon-s3

我正在将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返回相同的错误,所以我得到了我可以通过适当引用来包含空格,但这仍然留下了潜在的问题。

1 个答案:

答案 0 :(得分:1)

缓存控制参数需要 2短划线 --cache-control <value>,以及expires参数。

请参阅S3 documentation of cp