2026 Mac distants multi-régions Git & Docker Registry : retries, timeouts & cache (runbook)

Environ 14 min de lecture · MACCOME

Public : équipes qui exécutent la CI sur Mac distants à Singapour, au Japon, en Corée, à Hong Kong, US East ou US West alors que le Git principal, les registres Docker ou les magasins d’artefacts sont sur un autre continent—les nocturnes bloquent sur git fetch, pulls de couches ou téléchargements d’artefacts. Résultat : gardez les choix de topologie dans la matrice de proximité des artefacts ; ce runbook montre comment intégrer timeouts, seuils de bas débit, backoff exponentiel et plafonds de concurrence dans les templates tant que la topologie est figée. Structure : irritants, matrice de liens régionaux, réglages Git/Docker, six étapes, KPIs, clôture opérationnelle.

Pourquoi la CI reste lente alors que le CPU est « assez rapide » ?

Apple Silicon élève le plafond de compilation, mais la durée de pipeline est souvent plafonnée par des transferts transocéaniques répétés. Le même flux paraît instantané sur un portable et devient une longue traîne sur des runners mal alignés avec la région d’origine du dépôt. Six erreurs d’interprétation fréquentes.

  1. Faire confiance aux timeouts HTTP Git par défaut : RTT et pertes provoquent de longs blocages sans GIT_HTTP_LOW_SPEED_LIMIT / GIT_HTTP_LOW_SPEED_TIME ; les échecs apparaissent dans des étapes sans rapport et faussent la traque.
  2. Sauter les politiques de clone partiel ou shallow : l’historique et LFS se disputent le même budget egress ; la parallélisation de matrice multiplie les processus git et sollicite TLS et DNS.
  3. Ignorer la concurrence des pulls Docker et la déduplication : les hôtes de cache partagés voient des 429 ou resets TLS « aléatoires »—souvent absence de backoff, pas d’images corrompues.
  4. Omettre « construire une fois, promouvoir les artefacts » : reconstruire par région sans téléversements reprenables transforme la compilation en allers-retours inter-régions répétés.
  5. Étiqueter les traînes réseau comme disque ou Xcode : si disques et CPU sont inactifs mais les logs montrent des retries fetch/pull, revenir à la matrice de liens avant de monter en M4 Pro ou 2 To.
  6. Confondre Pods/SPM avec Git/registre : la lenteur du résolveur peut coexister mais les empreintes log diffèrent—associez le guide miroirs CocoaPods & SwiftPM.

Superposez la checklist runners auto-hébergés : les runners mappent les jobs aux machines ; ce runbook et la matrice de proximité décident si les pulls réussissent statistiquement—revoyez les trois dans un même jalon.

Tableau 1 : quatre questions quand Git, le registre et la région des builders divergent

À utiliser dans les dossiers d’architecture avec le guide multi-régions et conditions de location : faits à gauche, priorité d’action à droite.

SignalSymptômes typiquesFaire d’abord (cette semaine)Angle matériel
Builders en APAC, Git principal US EastP95 clone/fetch élevé ; échecs nocturnes groupésClones shallow/monobranche ; relever les seuils bas débit ; plafonner git parallèle ; évaluer des miroirs lectureRéseau avant CPU ; M4→Pro si la traîne persiste après correctifs de lien
Registre privé intercontinentalTimeouts de couches, 5xx intermittents, piles de retries pullCache pull-through ; réduire les matrices ; retries avec jitterLier le disque de cache aux alertes 1 To/2 To
Artefacts ventilés vers une autre régionUpload « OK » mais vérification lente ; builds dupliquésBuild unique + sommes de contrôle chunkées ; documenter la région de build primaireAligner les pics sur le foyer de données, pas la région la moins chère
Proxy de sortie d’entrepriseCertificats MitM, particularités SNI ou HTTP/2Listes d’autorisation séparées pour git et containerd/docker ; comparer empreintes TLSRevoir avec la politique d’accès SSH/VNC

Tableau 2 : réglages Git et Docker à coller en YAML (ajuster au RTT)

Defaults auditables—remplacez les espaces réservés par vos percentiles mtr, journaux de registre et pipeline.

ComposantLeviers clésExemple / sensEmpreinte d’échec
Git (HTTP/S)GIT_HTTP_LOW_SPEED_LIMIT, GIT_HTTP_LOW_SPEED_TIMEAbandonner transferts lents bloquésLong silence puis échec brutal ; pire sous charge matrice
Profondeur Git--depth, --single-branchRéduire le transfert d’objets pour CI sur HEADClones parallèles saturent l’egress
Docker / BuildKitMiroir de registre, max-concurrent-downloads, parallélisme de buildPlafonner pulls de couches simultanées avec un palier cache429, resets TLS, tempêtes sur le registre
Backoff orchestrateurRetries, délai de base, plafond, jitterÉviter stampèdes de retries synchroniséesMasses d’échecs alignées à la minute
bash
# Git: avoid cross-region hangs (tune per link; set in CI env)
export GIT_HTTP_LOW_SPEED_LIMIT=1000
export GIT_HTTP_LOW_SPEED_TIME=120
git fetch --depth=1 origin "+refs/heads/${BRANCH}:refs/remotes/origin/${BRANCH}"

# Docker: example daemon concurrency (platform-specific; align with ops)
# "max-concurrent-downloads": 3,
# "registry-mirrors": ["https://your-pull-through.example"]

# Orchestrator sketch: jittered backoff
# sleep = min(cap, base * 2**attempt) + random_jitter
info

Note : valider sur un job unique avant déploiement fleet ; des changements de concurrence synchronisés transforment des incidents sporadiques en certitudes. Si les résultats contredisent la matrice de proximité, privilégiez la résidence des données au tarif journalier le plus bas.

Six étapes : transformer les pulls inter-régions en templates auditables

Prérequis : labels et secrets runner isolés selon le guide runner ; si identifiants .git et chemins de cache sont partagés ad hoc, corriger d’abord.

  1. Dessiner la carte des liens primaires : remote Git par défaut, registre principal, buckets d’artefacts, région des builders ; booléen « région builder == foyer données » sur le tableau de bord.
  2. Geler la politique de pull : profondeur shallow, autorisation de git fetch --unshallow, enforcement monobranche ; interdire l’historique complet implicite en CI.
  3. Séparer les SLO fetch vs pull : suivre P50/P95 et classes d’échec (timeout, 5xx, TLS, 429) avec journaux Git vs runtime distincts.
  4. Ajouter backoff et plafonds de concurrence : les retries orchestrateur doivent jitter ; la concurrence Docker s’aligne avec la parallélisation des jobs pour éviter les stampèdes.
  5. Contractualiser les caches : propriété pull-through, nettoyage, seuils disque dans le manuel ops, liés aux revues 1 To/2 To.
  6. Revue bihebdomadaire : si la traîne persiste, déclencher déplacements de région ou miroirs—pas de retries illimités.

Trois KPI pour revues hebdomadaires et alertes

Utiliser ces intitulés tels quels sur les tableaux de bord.

  1. P95 Git fetch/clone vs nombre d’abandons bas débit : tracer à côté de la largeur de matrice parallèle ; P95 qui monte avec CPU inactif signale incident de lien.
  2. Taux de retry pull d’image et part des 429 : corréler aux jobs de pull concurrents ; pics simultanés impliquent de réduire la concurrence avant d’ajouter des hôtes.
  3. Octets d’artefacts inter-régions et nombre de builds dupliqués : quantifier le coût « build partout » en bande passante et heures ingénieur.

Contexte directionnel (pas un benchmark) : en 2025–2026, pulls transocéaniques à froid et matrices larges poussent souvent les latences de traîne au-delà de dizaines de minutes ; aligner le foyer de données avec le backoff bat souvent les upgrades CPU pour le P95.

Pourquoi locations courtes ad hoc et scripts maison peinent à tenir la stabilité enterprise

Les scripts personnels manquent de pistes d’audit ; tout changement de région invalide timeouts et caches. Une CI Apple Silicon contractuelle exige isolation bare metal, choix multi-régions et conditions base-plus-pic avec politique Git/registre sur la même page.

Des fournisseurs fragmentés sans egress stable aligné sur les foyers de données piègent les équipes dans des boucles de tempête de retries. Pour des chemins de pull reproductibles, une montée en charge horizontale par région et des modèles de secrets CI proches de la prod, un cloud Mac multi-régions dédié est en général plus serein que des hôtes temporaires en rotation. MACCOME propose des nœuds bare metal Mac mini M4 / M4 Pro à Singapour, au Japon, en Corée, à Hong Kong, US East et US West avec conditions flexibles—placez les builders là où vivent déjà Git et registres, puis finalisez avec tarifs publics et pages régionales aux côtés des guides multi-régions et runners.

Pilote : louer à court terme un builder co-localisé avec le foyer de données, exécuter la revue deux semaines ici, puis décider mensualités ou extension 2 To—éviter la facture longue durée « région bon marché, lien cher ».

FAQ

Comment cela s’associe-t-il à la matrice de proximité des artefacts ?

La matrice choisit où les chaînes doivent vivre ; ce runbook maintient la CI pendant migrations ou fenêtres de gel. Ouvrez les tarifs Mac mini et le guide multi-régions, puis joignez les deux documents au même ticket de changement.

Réduire d’abord la concurrence ou déplacer les régions ?

Si les tableaux montrent des 429, resets TLS ou retries synchronisés, baissez la concurrence et ajoutez du jitter. Si le P95 reste élevé et que les données peuvent bouger, planifiez un changement de région. Détails dans le centre d’aide location Mac mini.

Frontière avec l’article CocoaPods/SPM ?

Celui-là verrouille sources résolveur et chemins trunk/CDN ; celui-ci verrouille remotes Git et couches conteneur. Si les logs montrent traînes pod install et git fetch, séparez les métriques—n’optimisez pas une seule chaîne.