Guide

Cum rulezi o fermă de CI pe Mac mini dedicate

Cum rulează echipele 5 până la 20 de Mac mini dedicate ca fermă de CI: runneri pe proiect, un singur cont, o singură factură, ingineri care răspund.

Actualizat 2026-09-20

Un Mac mini duce lejer build-urile iOS ale unei echipe. În clipa în care ai trei aplicații, două branch-uri care se construiesc în paralel și un release train, ai nevoie de o fermă, iar felul în care o organizezi decide dacă CI-ul rămâne rapid sau devine lucrul de care se plânge toată lumea.

Uite cum rulează echipele 5 până la 20 de Mac-uri dedicate la MacDuty.

Pornește de la build-urile simultane, nu de la numărul de oameni

Singurul număr care contează e câte build-uri trebuie să ruleze în același timp în ora ta cea mai aglomerată. Nu dezvoltatori, nu repo-uri: build-uri simultane.

O formă aproximativă, valabilă pentru majoritatea echipelor iOS:

SituațieMașini
O aplicație, o echipă, build-uri de PR1 până la 2
Două sau trei aplicații, PR și nightly în paralel3 până la 5
Release train, teste UI pe o matrice de dispozitive6 până la 10
Agenție sau echipă de platformă care servește multe produse10 până la 20 sau mai multe

Timpul de așteptare la coadă e semnalul. Dacă build-urile așteaptă mai mult de câteva minute la vârf, mai adaugă o mașină. E mai ieftin decât ora pe care o pierde fiecare dezvoltator așteptând.

Un runner pe mașină sau mai mulți?

La fiecare Mac mini ai toată mașina pentru tine: fără hypervisor, fără vecin zgomotos. De aici, două tipare care merg amândouă.

Un runner pe mașină

Cel mai curat. Un build primește tot CPU-ul, tot GPU-ul și toată memoria. Folosește varianta asta pentru build-uri Xcode și teste UI, unde un build mănâncă fericit fiecare nucleu pe care i-l dai.

Doi sau trei runneri pe mașină

Merge când joburile sunt mici și limitate de I/O: teste unitare, linting, împachetare. Pe un M4 sau M6 de 32 GB, două joburi ușoare în paralel stau lejer.

E normal să le combini: mașini puternice dedicate build-urilor de release, mașini mai ușoare încărcate cu joburi rapide.

Cum împarți ferma pe echipe și proiecte

Pune etichete pe mașini și lasă pipeline-ul să trimită joburile la ele. Împărțirile utile:

Pe proiect

ios-app, sdk, internal-tools. Fiecare repo țintește propria etichetă, așa că un build stricat la un produs nu blochează niciodată altul.

Pe scop

mașini pr, rapide și mereu calde, mașini release, șterse înainte de fiecare build semnat.

Pe client

Agențiile dau fiecărui client mașinile lui, cu credențialele și certificatele lui. Nimic în comun, nimic care să scape dintr-un cont în altul.

Totul pe un singur cont MacDuty, cu o singură factură la sfârșitul lunii.

Cum ții ferma sănătoasă

Reinstalează între proiecte, nu niciodată

Un Mac care face build-uri de un an adună versiuni de Xcode, simulatoare și cache-uri. Cere-ne o reinstalare curată când muți o mașină pe un proiect nou.

Fixează toolchain-ul

Aceeași versiune de Xcode pe fiecare mașină dintr-un pool, actualizată când decizi tu. O fermă în care mașinile ajung pe versiuni diferite produce build-uri care trec pe un runner și pică pe altul.

Urmărește coada, nu CPU-ul

Graficele de CPU pe mașinile de build arată mereu alarmant și rar îți spun ce să faci. Timpul de așteptare la coadă îți spune când să mai adaugi hardware.

Ține o mașină de rezervă

La zece mașini, una căzută trebuie să fie un inconvenient, nu un incident.

Cum se compară cu cloud-urile Mac orchestrate

Platformele de orchestrare pun peste macOS virtualizat o planificare în stil Kubernetes, iar stratul ăla se plătește. Chiar e util dacă ai nevoie de VM-uri efemere, pornite pentru fiecare job, la scară mare.

Majoritatea echipelor sub douăzeci de mașini n-au nevoie. Au nevoie de câteva Mac-uri rapide și dedicate, care stau pornite, își țin cache-urile calde și costă la fel în fiecare lună. Asta e o fermă dedicată: mașini fizice întregi la preț fix, cu cache-ul de build încă acolo pentru jobul următor, în loc să fie aruncat odată cu VM-ul.

Mai primești și diferența care se vede la 2 noaptea, înainte de un release: oamenii care se ocupă de rack-uri răspund la email.

Cum pornești o fermă

Spune-ne forma: câte mașini, ce modele, ce trebuie instalat pe ele. Vin configurate cu versiunea ta de Xcode, cu agentul de runner, cu cheile și certificatele tale, iar reinstalările și schimbările din flotă le facem noi pe parcurs.

Întrebări

Pot rula mai multe Mac mini pe un singur cont MacDuty?
Da. Un cont ține câte mașini îți trebuie, cu o singură factură, pentru tine sau pentru fiecare dintre firmele tale.
De câte Mac mini am nevoie pentru CI pe iOS?
Dimensionează după build-urile simultane la vârf, nu după mărimea echipei. Una sau două mașini pentru o singură aplicație, trei până la cinci pentru câteva aplicații care se construiesc în paralel, șase până la douăzeci pentru un release train sau o agenție.
Pot rula mai mulți runneri de CI pe un Mac mini?
Da. Mașina e în întregime a ta. Un runner pe mașină pentru build-uri Xcode grele; doi sau trei pentru joburi ușoare, limitate de I/O, pe o mașină de 32 GB.
Pot avea echipe sau clienți diferiți mașini separate?
Da. Mașinile sunt etichetate și separate pe proiect sau pe client, cu credențialele lor, sub un singur cont și o singură factură.
E o fermă de Mac-uri dedicate mai ieftină decât un cloud Mac orchestrat?
Pentru o încărcare constantă de CI, da: un preț fix pe lună pentru fiecare mașină fizică, fără facturare la oră și fără strat de orchestrare de plătit.

Mai departe