Створення матриці jobs для паралельного виконання одного і того ж job з різними конфігураціями

Матриця jobs в GitHub Actions дозволяє виконувати один і той же job паралельно в різних середовищах або з різними конфігураціями. Це особливо корисно для тестування, коли потрібно переконатися, що ваш код працює належним чином у різних версіях середовищ або на різних платформах.

Як працює матриця jobs?

Матриця дозволяє визначити множинні конфігурації для jobs, такі як версії інструментів, операційні системи або інші параметри. GitHub Actions автоматично створить і запустить окремі jobs для кожної можливої комбінації конфігурацій, зазначених у матриці.

Приклад використання:

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        node-version: [12, 14, 16]
    steps:
      - name: Check out code
        uses: actions/checkout@v2

      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node-version }}

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm test

У цьому прикладі GitHub Actions запустить три jobs для кожної версії Node.js на кожній операційній системі, в результаті буде виконано дев'ять jobs (3 ОС × 3 версії Node.js). Це дозволяє автоматично тестувати ваш код на всіх підтримуваних платформах.

Розширені можливості матриці: include та exclude

Іноді потрібно додати або виключити певні комбінації конфігурацій. Це можна зробити за допомогою ключів include та exclude.

Приклад з використанням exclude:

strategy:
  matrix:
    os: [ubuntu-latest, windows-latest]
    node-version: [12, 14, 16]
  exclude:
    - os: windows-latest
      node-version: 12

У цьому прикладі job на Windows з Node.js версії 12 буде виключено з виконання, оскільки ця комбінація була виключена з матриці.

Переваги використання матриці

Використання матриці jobs дозволяє: