BitBucket管道YAML语法问题



我创建了一个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出现问题的原因。有指针吗?

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

最新更新