Guide
Mutarea de pe Cirrus Runners pe un Mac mini dedicat
Cirrus Runners nu mai primește clienți noi, iar contractele existente se apropie de final. Mută-ți job-urile macOS din GitHub Actions pe un Mac mini dedicat, nativ sau cu aceleași imagini Tart.
60 minute, actualizat 2026-09-15
În aprilie 2026, Cirrus Labs a anunțat că se alătură OpenAI. Cirrus CI a oprit rularea job-urilor pe 1 iunie 2026. Cirrus Runners nu mai primește clienți noi, iar clienții existenți sunt susținuți doar până la finalul contractului curent.
Dacă job-urile tale macOS din GitHub Actions rulează pe Cirrus Runners, au nevoie de o casă nouă până atunci. Ghidul ăsta arată două căi de mutare pe un Mac mini dedicat și cum alegi între ele.
Două căi de mutare
Calea A, un runner nativ. Runner-ul GitHub Actions rulează direct pe macOS. E cea mai simplă variantă, cu cele mai rapide build-uri și cu cache-uri care rămân calde între job-uri.
Calea B, mașini virtuale Tart. Rulezi aceleași imagini macOS de la Cirrus pe care le folosești azi, în Tart, pe Mac-ul tău. Fiecare job pornește de pe o mașină curată, exact ca pe Cirrus.
Path A, native runner
Fastest, and you install Xcode yourself.
Path B, Tart virtual machines
Nothing changes in the workflow except the label.
| Runner nativ | VM-uri Tart | |
|---|---|---|
| Timp de configurare | Cam 30 de minute | Cam o oră |
| Același mediu ca pe Cirrus | Nu, instalezi Xcode singur | Da, aceleași imagini |
| Mașină curată la fiecare job | No | Da |
| Cache-uri calde între job-uri | Da | Nu, decât dacă le pui în imagine |
| Job-uri simultane pe un Mac | Unul per runner | Până la două (limita din licența Apple) |
Alege A dacă echipa ta deține repository-ul și vrea viteză. Alege B dacă ai nevoie ca fiecare build să pornească dintr-o stare curată și cunoscută, sau dacă vrei să nu schimbi nimic în workflow-uri în afară de label.
Înainte să începi
Fă lista cu ce folosesc workflow-urile tale azi. Caută liniile runs-on care arată spre imagini Cirrus, de exemplu:
runs-on: ghcr.io/cirruslabs/macos-runner:sonomaNotează versiunea de macOS, versiunile de Xcode și tot ce instalează job-urile tale la început. Lista îți trebuie pe oricare dintre căi.
Calea A: runner nativ
Urmează ghidul nostru, Runner self-hosted de GitHub Actions pe un Mac mini, din linkurile de la finalul paginii. Acoperă Xcode, înregistrarea runner-ului și rularea lui ca serviciu.
Dă-i runner-ului un label care îl descrie, de exemplu macduty-m4. Apoi schimbă o linie în fiecare workflow:
# before
runs-on: ghcr.io/cirruslabs/macos-runner:sonoma
# after
runs-on: [self-hosted, macOS, ARM64, macduty-m4]Rulează un workflow pe runner-ul nou cât timp Cirrus încă merge. Când trece, mută-le și pe celelalte.
Calea B: aceleași imagini, în Tart
1. Instalează Tart pe Mac
brew install cirruslabs/cli/tart2. Trage o imagine Cirrus
Alege imaginea cea mai apropiată de ce rulezi azi. Cirrus publică imagini cu și fără Xcode:
tart clone ghcr.io/cirruslabs/macos-sequoia-xcode:latest ci-basePrimul pull e mare, deseori peste 50 GB, așa că lasă-i timp.
3. Pornește VM-ul și autentifică-te
tart run --no-graphics ci-base &
ssh admin@$(tart ip ci-base)Imaginile Cirrus vin cu un cont admin implicit. Schimbă-i parola înainte de orice altceva.
4. Înregistrează runner-ul în VM
În VM, înregistrează un runner GitHub Actions la fel ca pe Calea A, cu o diferență: adaugă --ephemeral, ca runner-ul să ia un singur job și apoi să se oprească.
./config.sh --url https://github.com/<owner>/<repo> --token <token> --ephemeral --labels tart-sequoia
./run.sh5. Un VM nou pentru fiecare job
Pe Mac, o buclă mică clonează o copie curată a imaginii, rulează un job în ea și o șterge:
while true; do
tart clone ci-base job
tart run --no-graphics job &
# wait for the job to finish, then:
tart stop job
tart delete job
doneÎn practică o să vrei un script care ia și un token de înregistrare nou pentru fiecare VM. Tool-uri ca Orchard, de la aceeași echipă, se ocupă de asta pentru configurații mai mari.
Licența Apple permite cel mult două mașini virtuale macOS pornite în același timp pe un Mac. Pentru mai multe job-uri în paralel, mai adaugi un Mac.
După mutare
- Verifică timpii de build. Pe un M4 dedicat sau mai nou, majoritatea echipelor văd build-uri la fel de rapide ca pe Cirrus, și mai rapide cu cache-urile calde.
- Ține workflow-urile vechi o săptămână. Lasă o copie a liniilor runs-on de la Cirrus pe un branch, până când runnerii noi trec printr-un release complet.
- Doar repository-uri private. Runnerii self-hosted n-ar trebui să ia job-uri din fork-uri publice.
De ce un Mac mini dedicat
- O lună la preț fix. Fără facturare la minut și fără nimic de renegociat când se termină un contract.
- Toate generațiile. De la M1 la M6, una lângă alta, ca să testezi pe cipurile pe care le au utilizatorii tăi.
- Numai al tău. Fără coadă, fără vecini, fără job-urile altcuiva pe hardware-ul tău.
- Găzduit în UE, sub GDPR.
MacDuty pune în rack Mac mini de la M1 la M6, cu macOS instalat și cu cheia ta SSH la locul ei, gata în câteva minute.
Mai departe