2026 — Mac distant partagé : matrice Fastlane Match, partitions login keychain et paramètres de file Codesign
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é
- Tirages Match concurrents. Deux couloirs lancent
match developmentet corrompent le dépôt git chiffré en plein push. - Fuite de keychain. Les certificats distribution importent dans le login keychain interactif alors que la CI attend un fichier de couloir headless.
- File Codesign silencieuse. L’archive attend indéfiniment parce que
flock -wdé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 1sur les workers CI ; rafraîchir avecgit fetch --depth 1 origin brancheavant Match. - Lectures concurrentes : autoriser les fetch
match readonlyou development tant qu’aucun verrou d’écriture n’est tenu. - Écritures sérialisées : envelopper
match development,match appstoreet 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-dbpar 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_NAMEetMATCH_KEYCHAIN_PASSWORDdans 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_mspar 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
- Geler les écritures. Drainer les archives ; bloquer
match nukesur l’hôte partagé. - Cloner en shallow. Épingler
MATCH_GIT_BRANCH; installer le verrou sous/var/run/meshmac/. - Provisionner les keychains. Créer les fichiers couloir ; importer les identités distribution une fois par couloir.
- Câbler les files. Envelopper l’archive dans
flocksur codesign.queue ; fixer les timeouts job d’après le tableau ci-dessus. - 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.