BitBucket 管道 YAML 语法问题

Issue with BitBucket pipeline YAML syntax

我创建了一个 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 文件中的 'script' 部分必须是字符串列表

我用其他在线 YAML 验证器检查了语法,它显示正常。不确定为什么 BitBucket 有问题。有什么指点吗?

列表中的第二项包含一个冒号,后跟一个 space,这使其成为 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

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

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