build matrixとは? バージョンとプラットフォームをまたぐテスト
matrixは1つのjob定義を多数の並列なjobに変える - あなたが列挙した変数の組み合わせごとに1つ - jobをコピペせずにバージョンとプラットフォームをまたいでテストするために。
build matrixは、単一のjobを構成のグリッド全体に扇状に広げるコンパクトな方法だ。複数のOS、言語バージョン、依存関係セットで、あなたのコードが一度に動くことを証明する手段だ。
matrixの仕組み
値のリストを持つ変数を宣言する; CIシステムがデカルト積 - 組み合わせごとに1つのjob - を生成し、それらを並列に実行する。3-OS × 3-バージョンのmatrixは9つのjobに展開し、それぞれが同じstepの独立した実行だ。
2 × 3 = 6 jobs
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
node: [18, 20, 22]なぜ有用か
- ユーザーより先に、バージョン固有・プラットフォーム固有のバグを捕まえる。
- 組み合わせを直列に実行する代わりに、カバレッジを並列化する。
- 広範な互換性テストを、数行のconfigで表現する。
コストの乗数
matrixは、課金対象の分を組み合わせの数だけ乗算する。短いjobの広いmatrixは、jobごとの分の切り上げでも罰せられる。グリッド全体を盲目的にテストするのではなく、シグナルをほとんど加えない組み合わせを削る(include/excludeを使い意味のあるペアだけをテストする)。
matrixとfail-fast
デフォルトでは、多くのシステムは1つのjobが失敗すると残りのmatrixをキャンセルする(fail-fast)。これは分を節約するが、失敗が1つの組み合わせに固有かどうかを隠す。すべての構成でpass/failのグリッド全体を見る必要があるときは、fail-fastを無効化する。
重要なポイント
- matrixは1つのjobを、その変数のデカルト積に展開する。
- 速いクロスプラットフォームのカバレッジのために、組み合わせを並列に実行する。
- コストは組み合わせの数に比例する - シグナルの低いものを刈り込む。
- fail-fastは最初の失敗で兄弟をキャンセルする; グリッド全体を見るには無効化する。
関連ガイド
What Is a GitHub Actions Workflow? Jobs, Steps, and TriggersA GitHub Actions workflow is a YAML file that defines when and how your CI runs. Learn how events, jobs, step…
Fail-Fast vs Continue-on-Error: Controlling How CI StopsFail-fast stops the pipeline at the first failure; continue-on-error lets it press on. Learn what each does,…
What Is Fan-Out / Fan-In in CI Pipelines?Fan-out splits work into many parallel jobs; fan-in collects their results into one. Learn this core pipeline…