Матриця jobs в GitHub Actions дозволяє виконувати один і той же job паралельно в різних середовищах або з різними конфігураціями. Це особливо корисно для тестування, коли потрібно переконатися, що ваш код працює належним чином у різних версіях середовищ або на різних платформах.
Матриця дозволяє визначити множинні конфігурації для 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
.
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 дозволяє: