Ontwerp een GitHub Actions Workflow voor Geautomatiseerd Cachebeheer
description
Deze prompt helpt gebruikers workflows te maken die automatisch caches beheren om buildtijden aanzienlijk te verkorten en de efficiëntie van CI/CD te verbeteren. Het pakt overbodige builds aan door cachingstrategieën toe te passen die specifiek zijn afgestemd op het project van de gebruiker. Dit leidt tot snellere deployments en minder resourcegebruik.
prompt
try_prompt
Help me een GitHub Actions workflow te ontwerpen die geautomatiseerd cachebeheer implementeert om buildtijden en resourcegebruik te optimaliseren. Projecttype: <voer je projecttype in, bijvoorbeeld Node.js, Python>. Cache afhankelijkheden of mappen: <noem d ... more
generate_helper
...
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een aangepaste GitHub Actions workflow die cachebeheer implementeert voor een Node.js-project. Het gebruikt de hash van package-lock.json als cache-sleutel om afhankelijkheden te cachen en zo buildtijden en resourcegebruik te optimaliseren.
```yaml
name: CI
on:
push:
branches:
- main # Pas aan indien nodig
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Restore cache voor node_modules en ~/.npm
- name: Cache node_modules
uses: actions/cache@v3
with:
path: |
node_modules
~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
# Installeer afhankelijkheden
- name: Install dependencies
run: npm install
# Voer tests uit
- name: Run tests
run: npm test
```
**Uitleg:**
- De cache wordt opgeslagen onder de key die gebaseerd is op de hash van `package-lock.json`. Als dit bestand niet verandert, wordt de cache hergebruikt, wat de installatietijd verkort.
- `restore-keys` zorgt ervoor dat bij het ontbreken van een exacte match, een bredere cache wordt gebruikt.
- Door `node_modules` en `~/.npm` te cachen, worden zowel de geïnstalleerde dependencies als de npm-cache geoptimaliseerd.
Indien je ook een buildstap hebt of andere cachebehoeften, kan je deze workflow verder uitbreiden.
provider: deepseek
model: deepseek-chat
Hier is een geoptimaliseerde GitHub Actions workflow met geautomatiseerd cachebeheer voor je Node.js project:
```yaml
name: CI
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'
- name: Cache dependencies
uses: actions/cache@v4
id: npm-cache
with:
path: |
~/.npm
node_modules
key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
restore-keys: |
npm-${{ runner.os }}-
- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci
- name: Run tests
run: npm test
```
**Belangrijke optimalisaties:**
1. **Gebruik van `actions/cache@v4`** - Cached zowel `node_modules` als `~/.npm`
2. **Cache key strategie** - Gebaseerd op hash van `package-lock.json` + besturingssysteem
3. **`npm ci` i.p.v. `npm install`** - Snellere, betrouwbaardere installatie bij cache miss
4. **Conditionele installatie** - Alleen dependencies installeren als cache niet beschikbaar is
5. **Restore keys** - Valt terug op algemenere cache als exacte match niet gevonden wordt
6. **Updated actions** - Gebruik de nieuwste versies van GitHub Actions
**Werking:**
- Bij elke push wordt de cache key gegenereerd op basis van de hash van `package-lock.json`
- Als de dependencies niet veranderd zijn, worden ze hersteld uit de cache
- Bij wijzigingen in `package-lock.json` wordt een nieuwe cache gemaakt
- Dit reduceert buildtijden aanzienlijk bij herhaalde builds met dezelfde dependencies

