Zum Inhalt springen

Ingenieurwesen

CI auf arm64 migrieren: Was tatsächlich kaputt geht

Wir haben 200 Repositorys auf arm64-Läufer verschoben. Hier ist die vollständige Liste dessen, was fehlgeschlagen ist und warum.

{Autor} · {Rolle} · {Datum} · {Minuten} {MinutenLabel}

arm64 ist pro Minute günstiger und oft schneller. Die Migration ist in der Regel unkompliziert. Wenn dies nicht der Fall ist, liegt die Ursache fast immer in derselben Kategorie von Dingen.

Was ist kaputt, in der Reihenfolge der Häufigkeit

  1. Transitive native Node-Module ohne Aarch64-Prebuild, die auf eine langsame Quellkompilierung zurückgreifen
  2. Python-Pakete ohne Manylinux_aarch64-Rad, Kompilierung aus dem Quellcode
  3. Docker-Basisbilder, die an ein Nur-AMD64-Tag angeheftet sind
  4. Servicecontainer ohne arm64-Variante, die stillschweigend auf die Emulation zurückgreifen
  5. Cache-Schlüssel ohne runner.arch, wodurch x64-Artefakte auf arm64 wiederhergestellt werden und Linkerfehler entstehen

Was nicht kaputt ging

Fast alles reiner Anwendungscode. Go, Rust, Java, Ruby, PHP und Modern Node kreuzen sich alle sauber. Die Fehler konzentrierten sich auf native Abhängigkeitskanten und nicht auf die Sprachen selbst.

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.