Haskell
Haskell CI auf GitHub Actions
GHC kompiliert den gesamten Abhängigkeitsbaum bei jedem CI-Lauf neu.
35m → 9m
Kaltbau
35m → 2m
Warmer Körperbau
GHC kompiliert den gesamten Abhängigkeitsbaum bei jedem CI-Lauf neu.
Warum es passiert
Der Cabal- oder Stack-Speicher wird nicht beibehalten und der Neukompilierungsprüfer von GHC kann nicht auf einer neuen Maschine helfen.
Was zu ändern ist
- Cache ~/.cabal/store oder ~/.stack mit Schlüssel in der Freeze- oder Resolver-Datei
- Zwischenspeichern Sie auch dist-newstyle oder .stack-work zur inkrementellen Wiederverwendung
- Pinnen Sie die GHC-Version explizit an – eine Beule macht alles ungültig
- Verwenden Sie einen 16-vCPU-Runner und -j, um paketübergreifend zu parallelisieren
Haskell auf runnerhut
Die einzige runnerhut-spezifische Zeile ist „runs-on: runnerhut-16vcpu-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.Node.jsnpm ci schreibt bei jedem Lauf Zehntausende kleiner Dateien.