什么是YAML?
YAML 是一种可消化的数据序列化语言,通常用于创建任何编程语言的配置文件。
YAML是为人类互动而设计的,是另一种数据序列化语言JSON的严格超集。但由于它是一个严格的超集,它可以做JSON可以做的一切,甚至更多。一个主要的区别是,换行和缩进在YAML中实际上是有意义的,而JSON则使用大括号和小括号。
这种格式适合于指定配置,这也是我们在CircleCI使用它的方式。

如何编写YAML
一个YAML文件的基本结构是一个映射。你可以把它称为字典、哈希或对象,这取决于你的编程语言或心情。
一般来说,它是由键和值组成的。
key: value
YAML 示例:标量类型
你可以使用各种标量类型作为值:数字、布尔和字符串(带引号或不带引号)。例如,config.yml ,第一行通常是。
version: 2
键中的字可以用下划线、破折号或空格分隔。在CircleCI,我们使用下划线。
如果一个键的值是一个多行字符串,你可以使用'|'字符的'字面块'风格。这在定义shell命令时特别有用。
command: |
if [ "${CIRCLE_BRANCH}" == "master" ];
then ansible-playbook site.yml -i production;
fi
注意,多行字符串的前导缩进将被剥离。
YAML 示例:集合类型
要创建集合,你所要做的就是使用缩进。
environment:
TEST_REPORTS: /tmp/test-reports
如果你有一个东西的列表(比如图片),你可以用破折号表示这个序列。
docker:
- image: ubuntu:14.04
- image: mongo:2.6.8
command: [mongod, --smallfiles]
- image: postgres:9.4.1
请注意,该序列中的第二个项目有两个键:image 和command 。command 这个键使用JSON风格的序列,因为(记住!)YAML是JSON的超集。
最后,YAML不允许使用制表符,所以如果你使用制表符来缩进,请让你的文本编辑器将其转换为空格。你的YAML中的语法错误有时会导致CircleCI构建失败,但通过在线验证器运行你的circle.yml/config.yml ,它们也很容易被预防。