Problem Statement
In GitHub Actions, what does 'strategy: matrix:' do?
Explanation
Matrix strategy in GitHub Actions creates multiple job runs with different variable combinations. This enables testing across multiple versions, platforms, or configurations without duplicating job definitions. Matrix variables are accessible as ${{ matrix.variable }} in job steps.
Example testing multiple Node.js versions and operating systems:
```yaml
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
node-version: [14, 16, 18]
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- run: npm test
```
Creates 9 jobs (3 Node versions × 3 operating systems). Matrix can include/exclude specific combinations:
```yaml
matrix:
node-version: [14, 16, 18]
os: [ubuntu-latest, windows-latest]
exclude:
- os: windows-latest
node-version: 14
```
Fail-fast: true (default) cancels remaining jobs if any fails. fail-fast: false allows all jobs to complete. Max-parallel limits concurrent jobs. Understanding matrix strategy enables comprehensive testing across multiple configurations efficiently.
