我正在尝试编写一个CircleCI配置,该配置将允许我重用整个列表/映射(?)条目及其属性。
具有以下条件:
image_definitions:
docker:
- &default_localstack_image
image: localstack/localstack:0.10.3
environment:
KINESIS_LATENCY: 0
defaults_env: &defaults_env
environment:
PG_PORT: 5432
PG_USER: root
我希望能够替换:
test: &test
docker:
- image: localstack/localstack:0.10.3
<<: *defaults_env
类似:
test: &test
docker:
- *default_localstack_image
<<: *defaults_env
但是这种方式行不通。
我也尝试过:
test: &test
docker:
- *default_localstack_image
*defaults_env
但是那也不起作用。
我该怎么做?
答案 0 :(得分:2)
test: &test
docker:
- <<: [*default_localstack_image, *defaults_env]
但是,请注意,合并功能不是YAML规范的一部分,仅针对过时的YAML 1.1进行了定义。我不知道这是否真正实现。即使是这样,也请注意,此合并键是奇怪的事情–违反了说明每个标签都将映射到一个类型的规范,即使该规范定义的加载过程已将其解释为转换指令没有执行转换步骤的地方。
类似的功能(例如用于连接标量)在SO上或多或少地被请求,但是不可用(并且可能永远不会),如果您需要执行类似的操作,我的建议是执行例如Ansible和SaltStack做并使用模板引擎作为YAML文件的预处理器。