Zum Inhalt springen

arm64 ohne QEMU

Image-Builds mit mehreren Architekturen

Erstellen Sie jede Architektur auf nativer Hardware und veröffentlichen Sie eine Manifestliste. Keine Emulationsstrafe.

Überall heimisch

amd64 baut auf amd64 auf, arm64 baut auf arm64 auf. So hätte es sein sollen.

Ein Manifest

Digests werden zu einem einzigen Tag zusammengeführt, den Verbraucher normalerweise abrufen.

5×–40× schneller

Wie viel genau, hängt davon ab, wie viel Ihr Bild kompiliert.

Die QEMU-Emulation ist der Standardpfad für Multi-Arch-Builds und der Grund, warum so viele Teams die arm64-Unterstützung stillschweigend eingestellt haben. Die Emulation einer gesamten Compiler-Toolchain ist so langsam, wie es sich anhört.

Häufige Fragen

Warum ist QEMU so viel langsamer?
Es übersetzt jede arm64-Anweisung zur Laufzeit in x64, sodass die Strafe davon abhängt, wie viele Anweisungen Ihr Build ausführt. Ein Dateikopierbild ist etwa dreimal langsamer; ein Rust- oder C++-Build ist 35–40× langsamer.
Wie veröffentliche ich ein Tag für beide Architekturen?
Erstellen Sie jede Architektur auf einem eigenen nativen Runner, pushen Sie sie per Digest und führen Sie sie dann mit Docker Buildx Imagetools Create zusammen. Verbraucher ziehen das Etikett ganz normal ab.
Benötige ich separate Caches pro Architektur?
Ja, und sie werden automatisch getrennt. Fügen Sie runner.arch auch in alle Aktionen/Cache-Schlüssel ein, sonst führt ein auf arm64 wiederhergestellter x64-Cache zu verwirrenden Linker-Fehlern und nicht zu einem sauberen Fehler.

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.