Node.js
Node.js CI auf GitHub Actions
npm ci schreibt bei jedem Lauf Zehntausende kleiner Dateien.
95er → 11er
npm ci
6m → 2m
Volle Pipeline
6 GB/s
Festplattendurchsatz
npm ci schreibt bei jedem Lauf Zehntausende kleiner Dateien.
Warum es passiert
node_modules ist ein Dateisystem-Stresstest, und an das Netzwerk angeschlossener CI-Speicher ist der schlechteste Ort, an dem man einen solchen Test ausführen kann.
Was zu ändern ist
- ~/.npm zwischenspeichern und node_modules direkt wiederherstellen, anstatt es neu zu installieren
- Wechseln Sie zu pnpm – sein inhaltsadressierter Speicher ermöglicht nahezu sofortige Installationen in einem warmen Cache
- Auf einem Läufer mit lokalem NVMe ausführen; Diese Arbeitslast ist festplattengebunden, nicht CPU-gebunden
- Verwenden Sie --prefer-offline, damit ein Warm-Cache nicht über das Netzwerk erneut validiert wird
Node.js auf runnerhut
Die einzige runnerhut-spezifische Zeile ist „runs-on: runnerhut-4vcpu-ubuntu-2404“. Alles andere sind Standard-GitHub Actions – dieselben Aktionen, dieselben Geheimnisse und dasselbe Berechtigungsmodell, das Sie heute verwenden.
Ihr nächster Build könnte doppelt so schnell sein — zum halben Preis
Kostenlos starten. Der Wechsel zurück ist dieselbe eine Zeile — auch dieses Diff veröffentlichen wir.
Verwandt
RustCargo erstellt bei fast jedem CI-Lauf das gesamte Abhängigkeitsdiagramm neu.GehGo-Builds sind lokal schnell und in CI unerklärlicherweise langsam.PythonDie Pip-Installation dauert nur wenige Minuten und Pytest läuft auf einem einzelnen Kern.JavaBei jedem Build werden dieselben Maven- oder Gradle-Abhängigkeiten erneut heruntergeladen.