Rust
GitHub Actions CI auf Rust
Cargo erstellt bei fast jedem CI-Lauf das gesamte Abhängigkeitsdiagramm neu.
12m → 4m
Kaltbau
12m → 45s
Warmer Körperbau
94 %
Cache-Trefferquote
Cargo erstellt bei fast jedem CI-Lauf das gesamte Abhängigkeitsdiagramm neu.
Warum es passiert
target/ wird nicht zwischengespeichert, oder der Cache-Schlüssel ändert sich, wenn sich eine Quelldatei ändert, sodass der inkrementelle Status bei jedem Lauf verworfen wird.
Was zu ändern ist
- Cache ~/.cargo/registry, ~/.cargo/git und target/ sind auf Cargo.lock und nicht auf Quelldateien verschlüsselt
- Verwenden Sie Sccache, damit sogar ein kaltes Ziel kompilierte Artefakte branchenübergreifend wiederverwendet
- Teilen Sie Cargo Check, Cargo Clippy und Cargo Test in parallele Jobs auf, die sich einen Cache teilen
- Erstellen Sie Release-Artefakte auf einem 16-vCPU-Läufer – Rustc skaliert nahezu linear mit Codegen-Einheiten
Rust 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
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.JavaBei jedem Build werden dieselben Maven- oder Gradle-Abhängigkeiten erneut heruntergeladen.