Matrice de décision · iOS 11 min de lecture

2026 — Mac distant partagé : matrice Fastlane Match, partitions login keychain et paramètres de file Codesign

M

Publié le 19 mai 2026

Équipe Meshmac

Les équipes iOS de deux à huit personnes sur un Mac distant partagé perdent des heures quand Fastlane Match, les login keychain et la file Codesign se croisent sans règles. Vous trouverez ici une matrice, un tableau flock, cinq étapes et une FAQ prêtes pour votre runbook MeshMac.

Liens : accueil, guide SSH/VNC, FAQ permissions build.

Trois douleurs sur un Mac distant partagé

  1. Tirages Match concurrents. Deux couloirs lancent match development et corrompent le dépôt git chiffré en plein push.
  2. Fuite de keychain. Les certificats distribution importent dans le login keychain interactif alors que la CI attend un fichier de couloir headless.
  3. File Codesign silencieuse. L’archive attend indéfiniment parce que flock -w dépasse le timeout du job sans journal du détenteur du verrou.

Matrice décisionnelle : layout couloir et rayon d’impact

Modèle Match + keychain couloir Login keychain partagé
Tirage concurrent Fetch shallow + verrou lecture ; écritures sérialisées Course sur git push ; perte aléatoire de certificats
File Codesign Une archive à la fois ; couloirs CI en file Archives parallèles en conflit sur auth USB
MeshMac 2–8 sièges Défaut sur builders M4 mutualisés Labo mono-locataire uniquement

Match git : concurrence des tirages et stratégie shallow

Traitez le dépôt de certificats comme une base de production : les lectures peuvent se chevaucher, jamais les écritures.

  • Clone shallow : git clone --depth 1 sur les workers CI ; rafraîchir avec git fetch --depth 1 origin branche avant Match.
  • Lectures concurrentes : autoriser les fetch match readonly ou development tant qu’aucun verrou d’écriture n’est tenu.
  • Écritures sérialisées : envelopper match development, match appstore et nuke derrière un seul fichier de verrou.
MATCH_GIT_URL=git@github.com:org/certificates.git
export GIT_SSH_COMMAND="ssh -o ControlMaster=auto -o ControlPath=/tmp/ssh-%r@%h:%p"
flock -w 180 /var/run/meshmac/match-repo.lock \
  fastlane match development --readonly false

Partitions login keychain pour la signature headless

Voir aussi la matrice Codesign Xcode et le guide nœud build partagé.

  • Fichier couloir : /srv/keychains/equipe-a-ci.keychain-db par application ou locataire.
  • Fenêtre de déverrouillage : security unlock-keychain -p "$KEYCHAIN_PASS" uniquement dans l’enveloppe Codesign.
  • Variables Match : définir MATCH_KEYCHAIN_NAME et MATCH_KEYCHAIN_PASSWORD dans l’environnement du couloir, jamais dans le login keychain partagé.
security list-keychains -s "$LANE_KEYCHAIN" login.keychain-db
security set-keychain-settings -lut 21600 "$LANE_KEYCHAIN"
security find-identity -v -p codesigning "$LANE_KEYCHAIN"

Verrous de build, attentes flock et timeouts file Codesign

Copiez ces valeurs par défaut dans votre runbook, puis ajustez à partir des percentiles d’attente de verrou sur de vraies archives.

Ressource flock / file Timeout job
Écriture git Match flock -w 180 sur match-repo.lock Plafond étape couloir 15 min
Codesign / archive flock -w 600 sur codesign.queue Archive 45–90 min
DerivedData chaud flock -w 60 sur dd-sync.lock Intégration 35–60 min
Profondeur file max 12 jobs / couloir échec rapide si disque < 15 % libre

Échecs, reprises, audit et signaux pour l’astreinte

  • Politique de reprise : au plus deux tentatives sur erreurs git fetch transitoires ; zéro reprise sur échec de déverrouillage keychain.
  • JSON d’audit : émettre lane, match_git_sha, keychain_path, lock_wait_ms par job.
  • Seuil d’alerte : pager lorsque le p95 d’attente de verrou dépasse 120 s sur trois archives consécutives.

Cinq étapes de déploiement sur MeshMac

  1. Geler les écritures. Drainer les archives ; bloquer match nuke sur l’hôte partagé.
  2. Cloner en shallow. Épingler MATCH_GIT_BRANCH ; installer le verrou sous /var/run/meshmac/.
  3. Provisionner les keychains. Créer les fichiers couloir ; importer les identités distribution une fois par couloir.
  4. Câbler les files. Envelopper l’archive dans flock sur codesign.queue ; fixer les timeouts job d’après le tableau ci-dessus.
  5. Activer l’audit. Expédier les journaux JSON vers votre webhook chat ; répéter un drill d’échec de déverrouillage avant de rouvrir le pool.

Repères citables pour revues d’architecture

  • Lectures Match concurrentes + shallow réduisent le git à froid sans courses d’écriture.
  • Keychains couloir évitent la session login GUI (voir FAQ permissions).
  • flock -w 600 sur Codesign convient aux archives 45–90 min sur builder partagé.

FAQ

Deux développeurs peuvent-ils lancer match development en même temps ?
Oui seulement avec fetch shallow, lectures concurrentes et écritures sérialisées sur le dépôt de certificats. Jamais de nuke ou rotation de mot de passe en parallèle.
La CI doit-elle déverrouiller login.keychain ?
Non. Utilisez un fichier keychain couloir déverrouillé dans l’enveloppe Codesign ; réservez la signature VNC GUI à un compte distinct selon le guide SSH contre VNC.
Quand ajouter un second nœud MeshMac ?
Lorsque le p95 d’attente de verrou reste au-dessus de deux minutes après réglage, ou lorsque plus d’une archive doit tourner en parallèle. Répartissez les couloirs Match sur les nœuds plutôt que d’augmenter flock sans fin.

Synthèse : sérialiser les écritures Match, partitionner les keychains

Les forfaits multi-nœuds MeshMac offrent un Apple Silicon dédié par couloir de signature lorsque les files saturent. Comparez les forfaits publics, lisez la répartition de charge et basculement multi-nœuds, puis réservez la capacité avant votre prochaine migration Match.

Choisissez nœud, accès et forfait

Louez un Mac distant partagé prêt pour Fastlane Match en SSH, puis suivez le guide SSH contre VNC et la FAQ permissions build. Ouvrez l’accueil ou les forfaits avant de figer vos paramètres de file.

Voir les forfaits