YAML语言的初学者指南

183 阅读2分钟

什么是YAML?

YAML 是一种可消化的数据序列化语言,通常用于创建任何编程语言的配置文件。

YAML是为人类互动而设计的,是另一种数据序列化语言JSON的严格超集。但由于它是一个严格的超集,它可以做JSON可以做的一切,甚至更多。一个主要的区别是,换行和缩进在YAML中实际上是有意义的,而JSON则使用大括号和小括号。

这种格式适合于指定配置,这也是我们在CircleCI使用它的方式。

What is YAML diagram

如何编写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

请注意,该序列中的第二个项目有两个键:imagecommandcommand 这个键使用JSON风格的序列,因为(记住!)YAML是JSON的超集。

最后,YAML不允许使用制表符,所以如果你使用制表符来缩进,请让你的文本编辑器将其转换为空格。你的YAML中的语法错误有时会导致CircleCI构建失败,但通过在线验证器运行你的circle.yml/config.yml ,它们也很容易被预防。