0Pricing
DevOps Bootcamp · レッスン

複数環境向けのマトリックスビルド

マトリックス戦略を活用し、言語、オペレーティングシステム、設定の複数の組み合わせでジョブを並列実行します。

「複数環境向けのマトリックスビルド」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

マトリックスビルドとは何ですか

GitHub Actions の強力な機能、マトリックスビルドについて学びましょう。さまざまなオペレーティングシステムやプログラミング言語のバージョンなど、多数の異なる環境でコードをテストする必要がある場合を考えてみてください。

組み合わせごとに個別のワークフローを作成する代わりに、マトリックスビルドでは変数のセットを定義できます。GitHub Actions は、それらの変数から考えられるすべての組み合わせに対して、ジョブを自動的に実行します。

マトリックスビルドを使う理由

マトリックスビルドは、次のような用途で非常に役立ちます。

  • クロスプラットフォームテスト:アプリケーションが Windows、macOS、Linux で動作することを確認できます。
  • 複数バージョンへの対応確認:異なるバージョンの Node.js、Python、データベースに対してテストできます。
  • 並列実行:これらのテストを同時に実行できるため、大幅に時間を短縮できます。

マトリックスビルドを使うと、より広いテストカバレッジを効率的に確保できます。

基本的なマトリックス構文

ジョブの strategy セクション内でマトリックスを定義します。strategy.matrix の中に1つ以上の変数を記述し、それぞれに値の配列を指定します。

GitHub Actions は、組み合わせごとにジョブを作成します。どのようになるか見てみましょう。

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [14, 16, 18]
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
      - name: Install dependencies
        run: npm ci
      - name: Run tests
        run: npm test

例:複数の Node.js バージョン

前のスニペットでは、node-version 変数に 14、16、18 の3つの値を定義しました。

この1つのジョブ定義によって、3つの個別のジョブが実行されます。各ジョブは ubuntu-latest 上で実行されますが、使用する Node.js のバージョンはそれぞれ異なります。これにより、プロジェクトがこれらのバージョンで動作することを確認できます。

複数のマトリックス変数の組み合わせ

変数は1つだけに限られません。マトリックスでは複数の変数を組み合わせることができます。たとえば、異なる Node.js バージョンを異なるオペレーティングシステムでテストできます。

strategy.matrix の下にキーと値の組み合わせを追加するだけです。ジョブの総数は、各変数の値の個数を掛け合わせた数になります。

例:OS と Node.js のマトリックス

Ubuntu と Windows の両方で、Node.js のバージョン 16 と 18 をテストするマトリックスは、次のように設定できます。

これにより、2(OS)× 2(Node.js のバージョン)= 4つの個別のジョブが作成されます。

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        node-version: [16, 18]
    steps:
      - uses: actions/checkout@v3
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
      - name: Install dependencies
        run: npm ci
      - name: Run tests
        run: npm test

「include」を使った組み合わせのカスタマイズ

デフォルトの直積ではカバーされない特定の組み合わせが必要な場合や、特定のビルドに追加の変数を設定したい場合があります。そのようなときは include を使って、マトリックスに新しいエントリを追加します。

たとえば、Ubuntu と Node.js 14 の組み合わせでのみ追加のテストを実行したり、特定の OS とバージョンの組み合わせに特定の環境変数を渡したりできます。

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        node-version: [16, 18]
        include:
          - os: ubuntu-latest
            node-version: 14
            test-suite: 'full'

特定の組み合わせの除外

既知の失敗する組み合わせや、プロジェクトに関係のない組み合わせがある場合はどうすればよいでしょうか。exclude キーワードを使うと、特定の設定をマトリックスから削除できます。

これにより、不要なジョブの実行を避け、関連性のあるテストケースに集中できます。

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        node-version: [16, 18, 20]
        exclude:
          - os: windows-latest
            node-version: 16

マトリックス変数へのアクセス

ジョブのステップ内では、${{ matrix.variable_name }} 構文を使って、現在のマトリックス変数の値にアクセスできます。これは、各マトリックスの組み合わせに応じてツールを設定したり、コマンドを実行したりするために重要です。

たとえば、${{ matrix.os }} はランナーのオペレーティングシステムを動的に設定し、${{ matrix.node-version }} は Node.js セットアップアクションを設定します。

実践的な用途

マトリックスビルドは、次のような用途で力を発揮します。

  • ライブラリ開発:依存関係の複数のバージョンに対してテストできます。
  • 多言語プロジェクト:異なる言語やコンパイラーで記述されたコンポーネントをビルド、テストできます。
  • ブラウザー互換性:対応するツールを使用している場合、異なるブラウザーでウェブアプリケーションをテストできます。

複雑なテストシナリオを、簡潔で保守しやすいワークフローに整理できます。

マトリックスビルドの課題

マトリックス戦略を使用する GitHub Actions のワークフローを考えてみてください。マトリックスは次のように定義されています。

strategy:
  matrix:
    os: [ubuntu-latest, macos-latest]
    python-version: [3.8, 3.9]
    exclude:
      - os: macos-latest
        python-version: 3.8

このマトリックス設定によって、いくつのジョブが作成されますか?

振り返り:マトリックスビルド

よくできました!GitHub Actions のマトリックスビルドについて学びました。

  • OS や言語のバージョンなど、複数の変数の組み合わせに対してジョブを実行できます。
  • ジョブ内で strategy.matrix を使って定義します。
  • include は特定の組み合わせを追加し、exclude は削除します。
  • 変数には ${{ matrix.variable_name }} を使ってアクセスします。

マトリックスビルドは、さまざまな環境で効率的かつ包括的なテストを行うために不可欠です。練習を続けて、使いこなせるようになりましょう。

よくある質問

「複数環境向けのマトリックスビルド」レッスンは無料ですか?

はい。「複数環境向けのマトリックスビルド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「複数環境向けのマトリックスビルド」で何を学びますか?

マトリックス戦略を活用し、言語、オペレーティングシステム、設定の複数の組み合わせでジョブを並列実行します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「複数環境向けのマトリックスビルド」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 複数環境向けのマトリックスビルド
  2. 依存関係のキャッシュによる高速化
  3. 再利用可能なワークフローと Actions
  4. 条件付き実行とジョブの依存関係
← DevOps Bootcampに戻る