🐳

知っていれば便利なYAMLのAnchorとAlias

2024/12/31に公開

使い方

# & Anchor定義
environment: &env
  env_1: COMMON_ENV1
  env_2: COMMON_ENV2
# * Alias指定
service1:
  *env
# 上書きや追加も可能
service2:
  <<: *env
  env_1: UPDATE_ENV1
  env_3: SERVICE_ENV3

確認には yq を使います。

https://mikefarah.gitbook.io/yq

$ cat sample.yaml | yq
# & Anchor定義
environment: &env
  env_1: COMMON_ENV1
  env_2: COMMON_ENV2
# * Alias指定
service1: *env
# 上書きや追加も可能
service2:
  !!merge <<: *env
  env_1: UPDATE_ENV1
  env_3: SERVICE_ENV3

yaml を評価する

$ cat sample.yaml | yq 'explode(.)'
# & Anchor定義
environment:
  env_1: COMMON_ENV1
  env_2: COMMON_ENV2
# * Alias指定
service1:
  env_1: COMMON_ENV1
  env_2: COMMON_ENV2
# 上書きや追加も可能
service2:
  env_2: COMMON_ENV2
  env_1: UPDATE_ENV1
  env_3: SERVICE_ENV3

:::note warn
2024/7/13時点でも Github Actions でサポートされていなかったりするようなので注意してください。
:::

https://github.com/actions/runner/issues/1182

Discussion