Sari la conținut

inginerie

Migrarea CI la arm64: ce se rupe de fapt

Am mutat 200 de depozite pe arm64 runners. Iată lista completă a ce a eșuat și de ce.

{autor} · {rol} · {data} · {minute} {minuteLabel}

arm64 este mai ieftin pe minut și adesea mai rapid. Migrarea este de obicei simplă. Când nu este, cauza este aproape întotdeauna aceeași categorie de lucruri.

Ce s-a stricat, în ordinea frecvenței

  1. Module tranzitive native Node fără prebuild aarch64, care se retrag la o compilare sursă lentă
  2. Pachete Python fără roată manylinux_aarch64, compilate din sursă
  3. Docker imagini de bază fixate pe o etichetă numai pentru amd64
  4. Containere de service fără variantă arm64, revenind în tăcere la emulare
  5. Memorați cheile în memoria cache fără runner.arch, restaurând artefactele x64 pe arm64 și producând erori de linker

Ce nu s-a rupt

Aproape tot codul de aplicație pur. Go, Rust, Java, Ruby, PHP și modern Node toate se încrucișează curat. Eșecurile au fost concentrate în limitele dependenței native, nu în limbile în sine.

Următorul tău build poate fi de două ori mai rapid, la jumătate de preț

Începe gratuit. Plecarea înseamnă aceeași linie, iar acel diff îl publicăm și noi.