我创建了一个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