# Caching और Matrix Builds — CI/CD Fundamentals: Pipelines, Testing और Deployment

Source: https://www.geekswithgeeks.com/hi/cicd/cicd-cache-matrix

> Dependency caching से GitHub Actions तेज़ करें और build matrix से कई Node versions या operating systems पर test करें।

## Dependencies cache करें

Package manager का store cache करने से हर run पर dependencies दोबारा download नहीं करनी पड़तीं। `setup-node` यह आपके लिए कर सकता है।

```yaml
steps:
  - uses: actions/checkout@v4
  - uses: actions/setup-node@v4
    with:
      node-version: 22
      cache: npm          # restores ~/.npm keyed by package-lock.json
  - run: npm ci
  - run: npm test
```

## Build matrix

Matrix एक ही job को कई संयोजनों पर parallel चलाता है।

```yaml
jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest]
        node: [20, 22]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: "${{ matrix.node }}" }
      - run: npm ci && npm test
```

Caches को lockfile hash पर key करें ताकि dependencies बदलने पर वे ताज़ा हों। Matrix run time गुणा करता है, इसलिए केवल वे संयोजन रखें जिन्हें आप सच में support करते हैं।

त्वरित जाँच

**Quiz:** Build matrix क्या करता है?

- [x] Runs a job across several combinations in parallel
- [ ] Encrypts secrets
- [ ] Deploys to production
- [ ] Deletes caches

*Answer:* Runs a job across several combinations in parallel. हर matrix संयोजन अपना job run बन जाता है।
