GitHub Actions patterns I use:
Matrix builds — Test multiple environments
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
Caching — Speed up builds
- uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
Fail fast — Stop on first error
jobs:
test:
continue-on-error: false # Default, but explicit is good
Reusable workflows — DRY your CI
jobs:
test:
uses: ./.github/workflows/test.yml
The goal: fast feedback. If your CI takes too long, developers won't run it.
