strategy.matrix
Тема дорожной карты · GitHub Actions
Блок strategy.matrix в GitHub Actions используется для объявления переменных, которые определяют параметры для выполнения matrix-сборки. Этот механизм позволяет преобразовать одно задание в множество параллельных запусков, отличающихся только значениями матрицы. Это особенно полезно для тестирования на различных операционных системах и версиях программного обеспечения без необходимости дублирования кода. Использование strategy.matrix упрощает процесс создания и управления CI/CD-тестовыми сценариями, обеспечивая широкое покрытие совместимости.
Как это работает
strategy.matrix позволяет создать множество параллельных заданий, каждое из которых выполняется с уникальным набором параметров. Например, задание может быть настроено таким образом, чтобы комбинировать оси os и node:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node: [18, 20, 22]
Это задание создаст декартово произведение всех возможных комбинаций значений для os и node. Значения матрицы доступны внутри каждого задания через переменные ${{ matrix.os }} и ${{ matrix.node }}.
Дополнительные комбинации можно добавить с помощью ключа include, а ненужные — исключить с помощью exclude. Настройка fail-fast: false позволяет запустить все задания, даже если некоторые из них завершились ошибкой. Ключ max-parallel позволяет ограничить количество параллельных запусков, что может быть полезно для управления нагрузкой на ресурсы.
Когда применять
strategy.matrix особенно полезна для тестирования на различных операционных системах и версиях программного обеспечения. Например, можно использовать её для тестирования библиотек Node.js на разных версиях Node.js (например, 18, 20, 22) и различных операционных системах (например, Ubuntu, Windows, macOS).
Кроме того, strategy.matrix может быть использована для тестирования приложений на различных версиях Python (например, 3.9, 3.10, 3.11, 3.12) или других языков программирования. Это позволяет убедиться, что приложение работает корректно на различных конфигурациях.
Типичные ошибки
Одной из распространенных ошибок при использовании strategy.matrix является её "взрывное" расширение, когда число комбинаций становится слишком большим. Например, если задать три оси: os, node, и database, каждая из которых имеет несколько значений, то количество заданий может быстро увеличиться. Это может привести к проблемам с использованием ресурсов и затруднить отслеживание ошибок.
Другой распространенной ошибкой является отсутствие настройки fail-fast: false. Если эта настройка не установлена, то при первой ошибке все остальные задания будут прерваны, что может привести к потере информации о других ошибках.