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

macOS, no VMactions.runner service,one job at a timeIts own diskDerivedData and packagesstay warm

Fastest, and you install Xcode yourself.

Path B, Tart virtual machines

macOS host, TartClean VMone job, deletedClean VMone job, deletedThe same Cirrus images you run today.Apple's licence: two at a time, per Mac.

Nothing changes in the workflow except the label.

Un Mac, două aranjamente. Alegerea dintre ele e tot ghidul.
Runner nativVM-uri Tart
Timp de configurareCam 30 de minuteCam o oră
Același mediu ca pe CirrusNu, instalezi Xcode singurDa, aceleași imagini
Mașină curată la fiecare jobNoDa
Cache-uri calde între job-uriDaNu, decât dacă le pui în imagine
Job-uri simultane pe un MacUnul per runnerPâ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:

.github/workflows
runs-on: ghcr.io/cirruslabs/macos-runner:sonoma

Notează 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:

.github/workflows
# 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

ssh
brew install cirruslabs/cli/tart

2. Trage o imagine Cirrus

Alege imaginea cea mai apropiată de ce rulezi azi. Cirrus publică imagini cu și fără Xcode:

ssh
tart clone ghcr.io/cirruslabs/macos-sequoia-xcode:latest ci-base

Primul pull e mare, deseori peste 50 GB, așa că lasă-i timp.

3. Pornește VM-ul și autentifică-te

ssh
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ă.

în VM
./config.sh --url https://github.com/<owner>/<repo> --token <token> --ephemeral --labels tart-sequoia
./run.sh

5. 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:

ssh
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