如何在已解包的锚下重用锚定条目?

时间:2019-09-25 09:14:35

标签: continuous-integration yaml circleci

我正在尝试编写一个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

但是那也不起作用。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

根据documentation

test: &test
  docker:
    - <<: [*default_localstack_image, *defaults_env]

但是,请注意,合并功能不是YAML规范的一部分,仅针对过时的YAML 1.1进行了定义。我不知道这是否真正实现。即使是这样,也请注意,此合并键是奇怪的事情–违反了说明每个标签都将映射到一个类型的规范,即使该规范定义的加载过程已将其解释为转换指令没有执行转换步骤的地方。

类似的功能(例如用于连接标量)在SO上或多或少地被请求,但是不可用(并且可能永远不会),如果您需要执行类似的操作,我的建议是执行例如Ansible和SaltStack做并使用模板引擎作为YAML文件的预处理器。