ファイルマージ
Probeは複数のファイルから1つのワークフローを組み立てられます。ワークフロー間で設定を共有したり、環境ごとの設定をチェック本体から分離したりするための仕組みです。
マージの仕組み
ファイルはカンマ区切りの1引数として渡します。
probe base.yml,production.ymlProbeはファイルを順番に読んで1つのYAMLドキュメントに連結し、それを解析します。それ以上のことはしません。キーごとの深いマージは行われません。
ここから2つの重要な帰結があります。
- 複数のファイルで定義されたトップレベルのキーは、最後のファイルの値になります。
vars:を再定義するとエントリ単位のマージではなくブロックごと置き換わり、jobs:を再定義するとすべてのジョブが置き換わります。 - あるファイルで定義したYAMLアンカーを、後続のファイルから参照できます。 同じドキュメントに入るためです。
パスにはディレクトリやグロブも指定できます。見つかった.ymlと.yamlが、指定した順に連結されます。
probe common/,workflow.yml
probe "configs/*.yml"トップレベルのキーで分割する
安全な分割方法は、ファイルごとに異なるトップレベルキーを持たせることです。
vars.yml:
vars:
api_url: "{{API_URL ?? 'https://api.example.com'}}"
timeout: "{{REQUEST_TIMEOUT ?? '30s'}}"workflow.yml:
name: API Health Check
description: Basic API monitoring
jobs:
- name: Health Check
defaults:
http:
url: "{{vars.api_url}}"
headers:
User-Agent: "Probe Monitor"
steps:
- name: API Health
uses: http
with:
get: /health
test: res.code == 200probe vars.yml,workflow.yml環境ごとにキーごと差し替える
最後の定義が勝つため、環境ごとのファイルでキーをまるごと差し替えられます。そのファイルにはワークフローが必要とする値をすべて書いてください。書かなかった値は引き継がれず、消えます。
workflow.yml:
name: API Health Check
jobs:
- name: Health Check
defaults:
http:
url: "{{vars.api_url}}"
steps:
- name: API Health
uses: http
with:
get: /health
test: res.code == 200production.yml:
vars:
api_url: https://api.production.example.com
environment: production
timeout: 10sprobe workflow.yml,production.yml使われるのはproduction.ymlのvarsブロックです。workflow.yml側にもvarsがあった場合、そちらのエントリは残りません。
アンカーで値を共有する
ファイルが1つのドキュメントになるため、キーを再定義せずに値を共有したい場合はアンカーを使います。
shared.yml:
shared:
json_headers: &json_headers
content-type: application/json
accept: application/json
auth_header: &auth_header
authorization: "Bearer {{vars.token}}"workflow.yml:
name: API Test
vars:
token: "{{API_TOKEN}}"
jobs:
- name: Checks
defaults:
http:
url: "{{vars.api_url}}"
headers:
<<: [*json_headers, *auth_header]
steps:
- name: List users
uses: http
with:
get: /users
test: res.code == 200probe shared.yml,workflow.ymlアンカーを定義したファイルを先に置く必要があります。Probeが知らないキー(ここではshared)は無視されます。
実践上の注意
- アンカー定義、ワークフロー本体、環境ごとの上書き、の順に並べます
- トップレベルのキーは1ファイルだけが持つようにします。2つのファイルが
varsを定義してしまうのが、もっともよくある落とし穴です probe dag workflow.yml,production.ymlは実行せずに連結結果を読み込むので、組み合わせが正しいかを手早く確認できます
次のステップ
更新日時