Skip to content
Latchkey

Build Matrixとは?

build matrixは、出荷したいプラットフォーム、バージョン、設定の各組み合わせごとに別々のbuildを生成します。

ソフトウェアが多くのターゲット - 複数のOS、アーキテクチャ、runtimeバージョン - で動作する必要がある場合、ターゲットごとにbuildが必要です。build matrixはターゲットの次元を一度宣言するだけで、CIがすべての組み合わせに対してbuild jobを生成します。

build matrixとtest matrix

test matrixは組み合わせをまたいで動作を検証し、build matrixはそれぞれに対して出荷可能なartifactを生成します。両者は同じmatrixの仕組みを使いますが、build matrixは通常、releaseのためにセルごとに1つのartifactをuploadします。

小さな例

os: [linux, macos, windows]arch: [x64, arm64] のmatrixは6つのbuildを生成し、それぞれがプラットフォーム固有のバイナリを生成します。それを app-linux-arm64app-macos-x64 などとして公開します。

セルごとのartifactの命名

各セルは、そのmatrixの値から導出した一意の名前でuploadする必要があります。そうしないと、2番目のuploadが最初のものを上書きします。OSとarchをartifact名にエンコードすることで、各ターゲットの出力を区別できます。

管理しやすく保つ

  • exclude で不可能または不要なセルを除外します。
  • ターゲットごとにcacheし、各セルが依然としてインクリメンタルbuildの恩恵を受けられるようにします。
  • 次元を実際に出荷するターゲットに限定します。

クロスコンパイルという代替案

ネイティブrunnerのmatrixの代わりに、1つのrunnerからすべてのターゲットをクロスコンパイルできる場合があります。これはmatrixの幅を、より複雑なツールチェーンと引き換えにします - あるプラットフォームのネイティブrunnerが希少または遅い場合に有用です。

重要なポイント

  • build matrixはターゲットの組み合わせごとに1つのartifactを生成します。
  • test matrixと同じ仕組みを使いますが、出荷可能なものを出力します。
  • uploadが互いを上書きしないよう、セルごとにartifactに一意の名前を付けます。

関連ガイド