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
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 ...
try_prompt
generate_helper
disclaimerOnPageApi
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