マトリクス戦略によるマルチバージョンテスト
GitHub Actionsのマトリクス戦略を使用して、複数のNode.jsバージョン、OS、または変数の組み合わせでテスト。fail-fast、include/exclude、動的マトリクスを解説。
Testing
詳細な説明
マトリクステスト戦略
マトリクス戦略はGitHub Actionsの最も強力な機能の1つです。異なる言語バージョン、OS、またはカスタム変数で同じジョブを複数回実行でき、ワークフローコードを複製する必要がありません。
ワークフローYAML
name: Matrix CI
on:
push:
branches:
- main
pull_request:
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
node-version: [18, 20, 22]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
マトリクス戦略の仕組み
この設定は9つのジョブ(3 OS x 3 Nodeバージョン)を作成します。各組み合わせは別々のジョブとして並列で実行されます。
主要オプション
| オプション | 説明 |
|---|---|
fail-fast: false |
1つが失敗しても他のマトリクスジョブを続行 |
fail-fast: true(デフォルト) |
1つ失敗すると全マトリクスジョブをキャンセル |
include |
クロス積にない特定の組み合わせを追加 |
exclude |
クロス積から特定の組み合わせを除外 |
マトリクス変数の参照
ジョブ設定のどこでも${{ matrix.variable-name }}を使用できます — ステップ入力、環境変数、runコマンド、または条件式で。
ユースケース
複数のランタイムバージョンやOSで動作する必要があるライブラリ、フレームワーク、ツールのテスト。特定のバージョン範囲との互換性を約束するオープンソースパッケージに不可欠です。