1

我创建了一个 bitbucket-pipelines.yml 文件来测试可以在远程 AWS 实例上运行的 powershell 脚本。

image: python:3.5.1

pipelines:
  custom:
    default:
      - step:
          caches:
            - pip
          script:
            - pip install awscli
            - aws ssm send-command --document-name "AWS-RunRemoteScript" --instance-ids "i-xxxxx" --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\": \"https://s3.us-east-2.amazonaws.com/my-bucket-name/test.ps1\"}"],"executionTimeout":["3600"]}' --timeout-seconds 600 --region us-east-2

当我尝试运行它时,我收到最后一行的以下错误消息:

bitbucket-pipelines.yml 文件中的“脚本”部分必须是字符串列表

我用其他在线 YAML 验证器检查了语法,它显示得很好。不知道为什么 BitBucket 有问题。任何指针?

4

1 回答 1

4

列表中的第二项包含一个冒号,后跟一个空格,这使其成为 YAML 中的映射。

在这种情况下,您需要引用它。但是,您已经使用了单引号和双引号,并且希望避免添加更多的反斜杠。

我更喜欢对更长的字符串使用块标量:

      script:
        - pip install awscli
        - >-
          aws ssm send-command
          --document-name "AWS-RunRemoteScript"
          --instance-ids "i-xxxxx"
          --parameters '{"sourceType":["S3"],"sourceInfo":["{\"path\":
          \"https://s3.us-east-2.amazonaws.com/my-bucket-name/test.ps1\"}"],
          "executionTimeout":["3600"]}'
          --timeout-seconds 600 --region us-east-2

这是一个所谓的折叠块标量,这意味着它的所有行都将与空格一起折叠。

我可以推荐我关于在 YAML 中引用字符串的文章,其中详细解释了所有这些吗?http://blogs.perl.org/users/tinita/2018/03/strings-in-yaml---to-quote-or-not-to-quote.html

于 2018-08-07T07:35:36.937 回答