Ingénieurs plateforme et responsables release iOS qui répartissent les pools de build en 2026 sur Singapour, le Japon, la Corée, Hong Kong, US East et US West voient souvent le même commit vert sur l’hôte A et diverger sur l’hôte B en signature de code ou macros compilateur—même lorsque Git et registres sont déjà réglés. Les causes fréquentes sont des niveaux de patch Xcode, les Command Line Tools, des piles Ruby/CocoaPods globales, des points de montage DerivedData et des vues keychain de session jamais figées contractuellement. Cet article fournit six classes de dérive prêtes pour RCA, deux matrices snapshots contre réinstall contre utilisateur CI dédié, des extraits santé copiables, un runbook en six étapes et trois métriques dures pour tableaux de bord. Il complète le guide Fastlane et certificats, la matrice Git et proximité des artefacts et la checklist exécuteurs auto-hébergés.
Les Mac distants mutualisés diffèrent des portables : les hôtes tournent, les snapshots reviennent en arrière, plusieurs personnes se connectent. Sans baseline mesurable pour “reproductible”, le triage brûle des heures-personnes. Capturez les six familles suivantes dans les pièces jointes de changement et examinez-les sur la même page que les étiquettes runner et les pics de location.
Xcode.app coexistent mais l’utilisateur CI n’épingle jamais xcode-select—chaînes Swift, linkers et en-têtes SDK changent entre jobs de nuit.pod install peut respecter un lockfile tout en divergeant sur les macros de compilation.ssh voient des keychains, proxys et magasins de confiance différents ; mélanger utilisateurs CI et comptes de debug interactifs donne “lane OK à la main, échec sans surveillance.”Superposez cette liste à l’inventaire de signature de l’article Fastlane : cette dimension verrouille les vues toolchain et système de fichiers ; l’autre verrouille les chaînes de signature et d’upload. Sans l’une ou l’autre, les fenêtres de revue explosent.
Les snapshots disque ne remplacent pas la gouvernance quotidienne : ils excellent pour revenir à une image dorée connue, pas pour compenser des bricolages ad hoc. Utilisez le tableau comme langage d’achat.
| Stratégie | Signaux | Bénéfice | Risques / notes contractuelles |
|---|---|---|---|
| Rollback snapshot vers image dorée | Échecs homogènes après une vague de correctifs ; besoin de récupération minute | Restaurer une combinaison épinglée (Xcode + CLT + gems de base) | Les snapshots vieillissent sans correctifs sécurité ; définir durée de vie et fenêtres de montée progressive |
| Réparation incrémentale sur place | Dérive d’un seul hôte (mauvais xcode-select, cache supprimé) | Coût faible, favorable à la cause racine | Les logins partagés re-contaminent les correctifs ; coupler avec des comptes dédiés |
| Utilisateur CI dédié, pas de partage GUI | Pools longue durée, forte concurrence, besoins d’audit | Répertoires home et keychains isolés, répétabilité renforcée | Coût de bootstrap plus élevé ; aligner avec la politique d’accès SSH/VNC |
| Premières commandes standardisées pour hôtes burst | Machines quotidiennes ou hebdomadaires rejoignant le pool | Déplacer la validation dans les premières minutes d’accès | Sauter les contrôles propage la dérive dans la file |
Comme dans la checklist capacité multi-projets : si l’attente disque et la croissance hebdomadaire divergent de l’utilisation CPU, corriger d’abord la politique DerivedData, puis discuter M4 Pro ou un second hôte burst.
| Signal (deux semaines) | cause probable | première action | Lien location / matériel |
|---|---|---|---|
| Racines d’archive et croissance DerivedData au-delà du plan avec fort await | Données chaudes sur le mauvais niveau (partage réseau) | Déplacer vers SSD locaux, rétention, jobs de nettoyage | 1TB vers 2TB ou nœud archive seulement |
| Premier build lent, suivants rapides, instabilité entre jobs | Droits cache ou écrivains concurrents | Préfixe DerivedData par job ou utilisateurs isolés | Les hôtes burst exigent une isolation plus stricte |
| Résolution SPM qui échoue par intermittence | Décalage egress / région registre | Aligner avec proximité artefacts et miroirs | Réseau avant cœurs |
| Le volume revient juste après nettoyage | Monorepo ou matrices simulateur larges | Réduire le parallélisme ou scinder les pools | Réduire la largeur des jobs avant la bande passante mémoire |
# Santé : répertoire développeur actif et build Xcode (utilisateur CI) xcode-select -p xcodebuild -version # Identités de signature visibles pour la CI (va avec l’article Fastlane) security find-identity -v -p codesigning # Emplacement DerivedData (préfixe personnalisé = doc d’équipe) defaults read com.apple.dt.Xcode IDECustomDerivedDataLocation 2>/dev/null || echo "(défaut ~/Library/Developer/Xcode/DerivedData)"
Note : conservez xcodebuild -version, le niveau CLT et xcode-select -path sur la même ligne que les étiquettes runner ou les identifiants contractuels—bien plus contraignant qu’un wiki “utiliser le dernier Xcode.”
Accès SSH/VNC selon le guide d’accès. Si vous enregistrez des runners en parallèle, codez étiquettes et concurrence avec la checklist runner.
Ces métriques découpent le “flaky” en segments actionnables et s’alignent sur les champs stockage du guide multi-régions et conditions de location.
xcodebuild -version plus xcode-select -p par hôte ; figer la file quand la dérive dépasse le seuil.Suivez aussi un booléen “utilisateur CI concurrent avec login GUI interactif.” S’il reste vrai, attendez-vous à des incidents de classe keychain et traitez-les avec la politique sécurité plutôt qu’avec des redémarrages ad hoc.
Tracez la durée de résolution SPM à côté de la durée de fetch git : des tendances divergentes indiquent si rouvrir la proximité artefacts ou rester dans cette baseline environnementale.
Les Mac personnels résistent à l’audit : politiques de veille, mises à jour surprises et piles gems globales invisibles dérivent en continu. Une fois les hôtes répartis entre régions avec releases contrôlées, “ça a buildé une fois” est un SLA différent de “ça build toujours pareil.” Les builds Apple Silicon de niveau contrat exigent du bare metal dédié, un choix multi-régions et des conditions de location composables avec des empreintes d’environnement liées à la même feuille que les factures.
Les postes fragmentés et prêts ponctuels peinent avec l’automatisation sans surveillance : sans politique DerivedData et comptes CI dédiés, les machines burst amplifient les défauts dans le pool principal. Les équipes qui ont besoin de plans de build stables, auditables et adaptés aux pics gagnent en général contre le matériel ad hoc avec des empreintes Mac cloud professionnelles. MACCOME fournit des nœuds Mac mini M4 / M4 Pro bare metal à Singapour, au Japon, en Corée, à Hong Kong, US East et US West avec des conditions flexibles—couches baseline et burst alignées sur registres et chaînes de signature ; finalisez via tarifs et pages régionales.
Schéma pilote : location courte dans la même famille régionale que dépôts et registres, exécuter le bloc santé plus la baseline deux semaines, puis engager des termes mensuels ou trimestriels—éviter les bascules “région bon marché” qui achètent des empreintes irréproductibles.
FAQ
En quoi est-ce différent de l’article Fastlane ?
Fastlane aligne certificats, profils et pics d’upload ; celui-ci aligne toolchains, répertoires derived et vues keychain. Ouvrez les tarifs Mac mini et le guide multi-régions sur le même jalon.
Hôte propre mais échec—par où commencer ?
Commencez par la matrice proximité des artefacts pour registres et egress. Si les dépendances sont reproductibles, revenir à xcode-select, DerivedData et utilisateurs CI dédiés. Accès et facturation : centre d’aide location Mac mini.
Comment cela s’associe-t-il à la checklist runner ?
Les runners mappent les jobs aux étiquettes et à l’isolation des secrets ; cet article définit l’empreinte derrière chaque étiquette pour ne jamais mélanger des niveaux de patch Xcode sous un même libellé. Lisez l’article runner avec la proximité des artefacts dans le même dossier de revue.