Skip to content
Latchkey

matrix ストラテジーとは?

matrix ストラテジーは、1 つの job 定義を多数の入力の組み合わせにわたって一度に実行します - すべての OS × すべての言語バージョンを並列で。

同じコードを多数の条件下でテストする必要はよくあります: 3 つの Node バージョン、2 つのオペレーティングシステム、両方のアーキテクチャ。ほぼ同一の job を 6 つ書くのは面倒です。matrix は次元を一度宣言すれば、CI がそれらを並列の job に展開してくれます。

matrix はどう展開されるか

次元とその値を列挙すると、CI が直積を生成します。os: [ubuntu, windows]node: [18, 20, 22] の matrix は 6 つの job - 組み合わせごとに 1 つ - に展開され、並列で実行されます。

小さな例

node: [18, 20, 22] を持つ strategy.matrix は、テストスイートをバージョンごとに 1 回、計 3 回、それぞれ独自の runner で実行します。job 名にはその値が表示される(test (20))ので、失敗すればどのバージョンが壊れたのかがすぐわかります。

include と exclude

include で単発の組み合わせを追加したり、exclude で特定のセルを除外したりできるので、大きなグリッドのすべてのセルをテストせずに、重要な組み合わせをカバーできます。

fail-fast の挙動

デフォルトでは、多くの matrix は fail-fast です: 1 つのセルが失敗すると残りがキャンセルされます。fail-fast をオフにするとすべてのセルが完了するため、失敗が 1 つの不安定な組み合わせなのか、すべてにわたる広範なリグレッションなのかがわかります。

組み合わせ爆発に注意

次元は掛け合わされます。3 次元にわたる 4 つの値で 64 の job になります - フィードバックは速いですが、実際のコストがかかります。matrix は、挙動が本当に異なる組み合わせだけに絞りましょう。

重要なポイント

  • matrix は、入力次元の直積にわたって 1 つの job を実行します。
  • include と exclude で、どの組み合わせを実行するかを調整できます。
  • 次元は急速に増える - matrix は本当に重要なものだけに絞りましょう。

関連ガイド