Skip to content
Latchkey

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は最初の失敗で兄弟をキャンセルする; グリッド全体を見るには無効化する。

関連ガイド