Gehostete macOS-Runner von GitHub vs dedizierter Mac, ehrlich gerechnet
Der Minutenpreis ist nur der Anfang des Vergleichs. Gehostete macOS-Runner berechnen Ihnen auch Arbeit, die eine warme Maschine nicht wiederholen würde. Und sie kosten Entwicklungszeit in Warteschlangen. Diese Seite vergleicht beide Optionen bei drei realistischen Nutzungsstufen und nennt jede Annahme.
Die Annahmen
- Gehostetes macOS kostet $0.062 pro Minute, den Tarif des Standard-Runners, aufgerundet pro Job.
- Ein kalter gehosteter Runner braucht pro Job etwa 3 Minuten, um Abhängigkeiten wiederherzustellen und neu zu bauen, was ein warmer Cache behalten hätte. Diese Zeit wird berechnet.
- Ein dedizierter M6 mini zum Festpreis von $139 im Monat, mit warmen Caches und ohne Wiederherstellung pro Job.
- Wartezeit berechnet GitHub nicht, aber sie ist real. In Stoßzeiten wartet man oft ein paar Minuten auf einen macOS-Runner.
Drei Teams, ein Monat
light steady heavy
jobs per month 120 400 900
minutes per job 8 10 12
billed on hosted 1,320 min 5,200 min 13,500 min
incl. cache restore (360) (1,200) (2,700)
hosted cost $82 $322 $837
dedicated M6 $139 $139 $139
monthly difference -$37 +$203 +$718Das Team mit wenig Last (light) sollte bei gehosteten Runnern bleiben. Das Team mit gleichmäßiger Last (steady) spart ein paar hundert Dollar im Monat und bekommt schnellere Builds. Das Team mit hoher Last (heavy) bezahlt jeden Monat mehrfach für eine Maschine und bekommt eine langsamere.
Woher die versteckten Minuten kommen
Jeder gehostete Job startet mit einem sauberen Image. Er lädt also SwiftPM-Pakete, CocoaPods und Teile der Simulator-Runtime neu und baut DerivedData von Grund auf. In einem echten Projekt sind das mehrere berechnete Minuten pro Job, bevor Ihr Code überhaupt kompiliert. Auf einer dedizierten Maschine bleiben diese Dateien erhalten. Der zweite Build des Tages macht also dort weiter, wo der erste aufgehört hat.
Tempo, nicht nur Geld
Derselbe warme Cache, der berechnete Minuten spart, spart auch echte Wartezeit. Teams, die einen gehosteten Build von 12 Minuten auf einen dedizierten Mac mini mit warmem Cache verlegen, sehen ihn oft nach 4 bis 6 Minuten fertig. Davor gibt es keine Warteschlange. Das ist der Unterschied zwischen einem Pull Request, der vor dem Mittagessen geprüft ist, und einem danach.
Was ein dedizierter Mac nicht löst
- Parallele Matrizen. Eine Maschine führt einen Job nach dem anderen aus. Teilen Sie die Matrix auf oder nehmen Sie weitere Geräte dazu.
- Öffentliche Repositories. Führen Sie keinen nicht vertrauenswürdigen Pull-Request-Code auf einer Maschine aus, die Ihnen wichtig ist. Lassen Sie solche Jobs auf gehosteten Runnern.
- Jemand muss sie betreiben. Updates, der Runner-Dienst, Löschungen. Das übernimmt MacRun zum Festpreis. Bei einer reinen Miete ist es Ihre Aufgabe.
Rechnen Sie Ihre eigenen Zahlen im Kostenrechner durch. Die vollständige Tariftabelle finden Sie auf der Seite zu den GitHub-Actions-Preisen.
Häufige Fragen
Ist ein dedizierter Mac immer günstiger als gehostete macOS-Runner von GitHub?
+
Nein. Unter etwa 2,242 macOS-Minuten im Monat kostet die Abrechnung nach Minuten weniger als eine Maschine für pauschal $139. Darüber ist der dedizierte Mac günstiger, und der Abstand wächst mit der Nutzung.
Warum berechnen gehostete Runner mehr Minuten, als mein Build dauert?
+
Weil jeder Job mit einem sauberen Image startet. Vor dem Kompilieren verbraucht er berechnete Minuten, um Abhängigkeiten wiederherzustellen und Caches neu zu bauen. Eine warme, dedizierte Maschine überspringt diese Arbeit ab dem zweiten Job.
Wie viel schneller ist ein dedizierter Mac mini als ein gehosteter Runner?
+
Mit warmem Cache und ohne Warteschlange ist ein gehosteter Build von 12 Minuten oft nach 4 bis 6 Minuten fertig. Der genaue Gewinn hängt davon ab, wie viel Ihres Builds aus Arbeit an Abhängigkeiten und Caches besteht.
Kann ich beides gleichzeitig nutzen?
+
Ja, und viele Teams tun das. Lassen Sie den Build des main-Branch und die meisten Pull Requests auf dem dedizierten Mac laufen. Breite Gerätematrizen und Jobs aus öffentlichen Repositories bleiben auf gehosteten GitHub-Runnern.