Knooppunt.js
Node.js CI op GitHub Actions
npm ci schrijft bij elke run tienduizenden kleine bestanden.
95s → 11s
npm ci
6m → 2m
Volledige pijplijn
6 GB/sec
Schijfdoorvoer
npm ci schrijft bij elke run tienduizenden kleine bestanden.
Waarom het gebeurt
node_modules is een stresstest voor het bestandssysteem, en netwerkgekoppelde CI-opslag is de slechtst mogelijke plaats om er een uit te voeren.
Wat te veranderen
- Cache ~/.npm en herstel node_modules rechtstreeks in plaats van opnieuw te installeren
- Ga naar pnpm: de op inhoud geadresseerde winkel zorgt ervoor dat installaties vrijwel onmiddellijk in een warme cache worden uitgevoerd
- Ren op een hardloper met lokale NVMe; deze werklast is schijfgebonden en niet CPU-gebonden
- Gebruik --prefer-offline zodat een warme cache niet opnieuw wordt gevalideerd via het netwerk
Node.js op runnerhut
yaml
jobs: test: runs-on: runnerhut-4vcpu-ubuntu-2404 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: 22, cache: npm } - run: npm ci --prefer-offline - run: npm testDe enige runnerhut-specifieke regel is `runs-on: runnerhut-4vcpu-ubuntu-2404`. Al het andere is standaard GitHub Actions — dezelfde acties, dezelfde geheimen en hetzelfde machtigingsmodel dat u vandaag de dag gebruikt.
Je volgende build kan twee keer zo snel zijn, voor de halve prijs
Begin gratis. Weggaan is dezelfde ene regel, en die diff publiceren we ook.
Gerelateerd
RustCargo herbouwt de volledige afhankelijkheidsgrafiek bij vrijwel elke CI-run.GaGo-builds zijn lokaal snel en op onverklaarbare wijze langzaam in CI.Pythonpip-installatie duurt minuten en pytest draait op één kern.JavaBij elke build worden dezelfde Maven- of Gradle-afhankelijkheden opnieuw gedownload.