Leitfäden
So beschleunigen Sie GitHub Actions
Ihre Pipeline braucht länger, als irgendjemand warten möchte, und es ist nicht klar, wo die Zeit vergeht.
8 Min. Lesezeit
Ihre Pipeline braucht länger, als irgendjemand warten möchte, und es ist nicht klar, wo die Zeit vergeht.
Symptome
- Entwickler wechseln während des Wartens den Kontext
- Die Pipeline-Dauer verlängert sich vierteljährlich
- Niemand kann sagen, welcher Schritt am langsamsten ist
Warum es passiert
Die Arbeitszeit verteilt sich auf die Warteschlangenzeit, den Runner-Start, die Cache-Wiederherstellung, die Abhängigkeitsinstallation und den Build selbst. Teams optimieren normalerweise das letzte, weil es das einzige ist, das sie sehen können.
So beheben Sie das Problem
- Messen Sie zuerst: Teilen Sie die Warteschlangenzeit, die Einrichtung, die Cache-Wiederherstellung und die Schrittzeit auf, bevor Sie etwas ändern
- Aktivieren Sie die Parallelitätsstornierung, damit ersetzte Pushs keine Kapazität mehr verbrauchen
- Korrigieren Sie die Cache-Trefferrate, bevor Sie größere Läufer kaufen – das ist normalerweise der größere Hebel
- Läufer in der richtigen Größe im Vergleich zur gemessenen CPU-Auslastung, nach oben und unten
- Parallelisieren Sie den kritischen Pfad: Teilen Sie lange Testsuiten auf, teilen Sie Flusen in einen eigenen Job auf
- Wechseln Sie zu Läufern mit lokalem NVMe, wenn die E/A-Wartezeit hoch ist
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
So finden Sie den langsamen Schritt in einem WorkflowDie Pipeline ist langsam, aber jeder einzelne Schritt sieht vernünftig aus.So reduzieren Sie GitHub Actions KaltstartsJobs ruhen 30 bis 90 Sekunden, bevor der erste Schritt ausgeführt wird.So diagnostizieren Sie GitHub Actions WarteschlangenzeitenAufträge stehen minutenlang in der Warteschlange, bevor ein Läufer sie abholt.So beschleunigen Sie den Git-CheckoutAktionen/Auschecken dauern bei einem großen Repository nur wenige Minuten.