Trois réservoirs qui remplissent un SSD 256 Go sans prévenir
Sur un Mac distant loué pour compiler, DerivedData grossit à chaque branche et chaque version de Xcode : indexation, modules précompilés et caches intermédiaires s'accumulent plus vite que les artefacts que vous archivez volontairement. Les dépendances Swift Package Manager vivent dans un second silo (checkouts, builds de paquets, résolution répétée) qui peut doubler la surface disque dès que plusieurs pipelines tournent en parallèle. Enfin, simulateurs, CoreSimulator et journaux système occupent un troisième compartiment souvent oublié jusqu'à ce que macOS affiche l'alerte rouge.
Le piège en 2026 est identique au Japon, en Corée, à Hong Kong, à Singapour ou sur la côte Ouest américaine : la latence réseau n'explique pas la panne — c'est le SSD plein qui bloque soudainement xcodebuild, les uploads vers App Store Connect ou les extractions d'IPA. D'où la nécessité d'un budget disque avant la location, pas après la première release chargée.
Budget en cinq compartiments (même feuille pour les cinq hubs)
Partitionnez mentalement le volume interne : système + Xcode, DerivedData dédié CI, caches SPM, artefacts et archives, marge d'urgence (mise à jour macOS mineure, pics de logs). Sur 256 Go, visez au moins 15 à 20 % libres en permanence pour éviter l'amplification des écritures et les corruptions silencieuses. Sur 512 Go, réallouez la marge vers des builds parallèles ou des simulateurs supplémentaires, mais gardez la même discipline : sans quotas, le disque redevient une loterie.
Pour relier stockage, parallélisme et synchronisation d'artefacts entre régions, la grille détaillée de 2026 : Mac distant — stockage, parallélisme, interrégional : M4/M4 Pro et synchro d'artefacts reste la base la plus proche de ce sujet.
Configurations M4 : 16/256, 24/512, puis M4 Pro avec 1 To ou 2 To
Le couple 16 Go / 256 Go convient à une file CI courte avec un seul schéma principal, nettoyage agressif après chaque job et interdiction des simulateurs lourds simultanés. Le 24 Go / 512 Go absorbe deux files séquentielles ou un monorepo SPM profond sans multiplier les locations. Lorsque plusieurs branches longues vivent en parallèle et que vous refusez de purger DerivedData à chaque merge, un M4 Pro avec SSD 1 ou 2 To devient moins cher en ingénierie que des heures perdues à recompiler depuis zéro chaque nuit.
La RAM influence aussi le disque : sous pression mémoire, macOS swappe sur le même NAND que vos caches Xcode, ce qui accélère l'usure et réduit l'espace utile. C'est pourquoi les équipes qui poussent plusieurs xcodebuild concurrents préfèrent souvent 24 Go avec 512 Go plutôt que 16 Go avec 512 Go, même si le stockage semble identique sur le papier.
Pour figer versions d'Xcode et SDK sur chaque runner avant d'ajuster les quotas, voir 2026 : Mac distant — verrouiller une ligne de build comme une image VPS ?
Matrice décision : hygiène, surstockage ou voie parallèle
Utilisez la table suivante comme grille de gouvernance mensuelle : elle compare le coût opérationnel (temps humain + risque) au surcoût matériel.
| Signal observé | Action prioritaire | Quand monter d'un cran |
|---|---|---|
| Espace libre < 12 % plusieurs jours | Script de purge DerivedData par job + rotation des logs | Si les builds recomplètent > 25 % du cache à chaque run |
| SPM re-télécharge après chaque agent | Miroir interne ou cache HTTP partagé entre runners | Si le trafic sortant domine la facture réseau |
| Files d'attente > SLO malgré disque sain | Deuxième Mac 16/256 en file parallèle plutôt qu'un seul 2 To | Si la contention RAM ou CPU reste le goulot |
| Branches longues + binaires lourds | DerivedData par branche sur volume dédié ou externe | Passage M4 Pro 1 To / 2 To si l'I/O saturé persiste |
La voie « deux petits M4 » bat souvent un seul gros SSD lorsque les jobs sont indépendants : vous isolez les catastrophes disque et vous répartissez les pics entre nœuds. En revanche, un M4 Pro avec 2 To simplifie la gouvernance lorsqu'une seule équipe partage un dépôt gigantesque et exige des simulateurs multiples.
Automatiser la hygiène sans casser les releases
Planifiez trois niveaux : nettoyage léger après chaque job (artefacts temporaires, logs), nettoyage hebdomadaire (vieux dossiers DerivedData non référencés par les branches actives), purge trimestrielle des runtimes de simulateur obsolètes. Toujours conserver une fenêtre de grâce pour les builds en cours et journaliser ce qui est supprimé afin de corréler d'éventuelles régressions de temps de compilation.
Documentez les chemins (DERIVED_DATA_PATH, dossiers SPM, emplacement des archives) dans le même dépôt que vos workflows : un nouveau membre qui provisionne un runner au Japon ou en Californie appliquera ainsi la même politique qu'à Singapour, sans improvisation locale.
Questions fréquentes
Pourquoi macOS sur Mac mini M4 tire le meilleur parti de ce budget
La chaîne Xcode, codesign et notarytool est native sur Apple Silicon : pas d'émulation x86, pas de pilotes exotiques, et une consommation au repos d'environ quelques watts seulement sur Mac mini M4, idéal pour des runners allumés en continu. macOS combine Gatekeeper, SIP et FileVault pour réduire la surface d'attaque sur des machines exposées au réseau, ce qui compte lorsque vos scripts de nettoyage tournent en root ou via launchd. L'écosystème Homebrew, SSH et outils Apple unifiés diminuent le temps passé à maintenir l'image du runner comparé à une pile Windows ou Linux reconfigurée chaque trimestre.
Si vous voulez appliquer les quotas et matrices ci-dessus sur du matériel prévisible, silencieux et à coût total maîtrisé, le Mac mini M4 reste le point d'entrée le plus rationnel en 2026 : passez à l'action dès maintenant pour aligner performance, sécurité et espace disque sur une seule plateforme.