【问题标题】:Issue with BitBucket pipeline YAML syntaxBitBucket 管道 YAML 语法问题
【发布时间】:2018-08-07 04:03:34
【问题描述】:

我创建了一个 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 有问题。有什么指点吗?

【问题讨论】:

    标签: amazon-web-services yaml bitbucket ssm amazon-ssm-agent


    【解决方案1】:

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

    【讨论】:

    • 感谢@tinita 的精彩解释! :) 在我删除空间后它现在可以工作了,但你的建议看起来更具可读性。肯定也会检查你的帖子。这是一个很大的。 :) 再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 2017-04-02
    • 2017-04-12
    • 2020-07-23
    • 2020-06-12
    • 2021-05-13
    • 1970-01-01
    相关资源
    最近更新 更多