How to use matrix builds in GitHub Actions?
· Category: DevOps & CI/CD
Short answer
Matrix builds in GitHub Actions run a job multiple times with different combinations of variables. They are useful for testing across operating systems, language versions, and dependency sets.
Steps
- Define a
strategy.matrixin the job. - Reference matrix variables in steps.
- GitHub Actions spawns a job for each combination.
Example
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node: [16, 18, 20]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- run: npm test
Tips
- Use
fail-fast: falseto run all combinations even if one fails. - Exclude specific combinations with
exclude. - Include additional combinations with
include.
Common issues
- Large matrices consume many runner minutes.
- Cross-platform shell differences can cause script failures.
- Matrix variables must be referenced correctly with
${{ matrix.var }}.