Schnell
Swift CI auf GitHub Actions
Die schnelle Typprüfung dominiert die Build-Zeit und zwischen den Läufen wird nichts wiederverwendet.
14m → 4m
Bauen
14m → 70er Jahre
Inkrementell
Die schnelle Typprüfung dominiert die Build-Zeit und zwischen den Läufen wird nichts wiederverwendet.
Warum es passiert
Das .build-Verzeichnis von SwiftPM und DerivedData von Xcode werden verworfen, sodass bei jedem Lauf das gesamte Moduldiagramm einer Typprüfung unterzogen wird.
Was zu ändern ist
- Behalten Sie .build für SwiftPM- und DerivedData für Xcode-Projekte bei
- Finden Sie langsame Ausdrücke mit -Xfrontend -warn-long-expression-type-checking=200
- Teilen Sie Module auf, damit eine Änderung in einem Modul nicht alles ungültig macht
- Verwenden Sie einen M4-MacOS-Runner – die Swift-Kompilierung ist stark Single-Thread-empfindlich
Swift auf runnerhut
Die einzige runnerhut-spezifische Zeile ist „runs-on: runnerhut-macos-15-m4“. 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.