DevOps / CI·CD 11 avril 2026

Xcode SwiftPM registre, resolve et cache CI sur Mac cloud loué (2026)

MacXCode Engineering Team · ~16 min

Sur des hôtes Apple Silicon loués à Singapour, Tokyo, Séoul, Hong Kong, US East, les échecs viennent souvent du fetch de dépendances : jetons registre, Package.resolved obsolète, jobs concurrents sur le même cache SPM. Lisez aussi SwiftPM vs CocoaPods, jobs xcodebuild parallèles et runner self-hosted.

Pourquoi la région compte

  • Les chemins d’egress et listes IP diffèrent entre SG et US.
  • Git LFS / artefacts binaires : RTT élevé ⇒ préchauffage du cache.
  • Multi-tenant : évitez le partiage naïf de ~/Library/Caches/org.swift.swiftpm.
Règle : Package.resolved commité sur les branches release ; resolve lecture seule sur main.

Auth sans GUI

Secrets CI → ~/.netrc, mode 600, suppression post-job.

Politique de lock

BranchePolitiqueCI
mainLock obligatoireÉchec si graphe change
FeatureMises à jour botPR avec nouveau lock
LibSouvent sans lockLock éphémère en CI

Chemins

CheminRôleNote
SourcePackagesSourcesIsolation par job
DerivedDataIndexLimites parallèles
Cache globalTéléchargementsCouche warm RO + écritures isolées

Étapes CI SSH

swift package resolve — alignez signature et resolve avec le même utilisateur que l’archive distante.

Matrice régionale

SujetMesureMitigation
RTT registreTTFBMiroir
GitHub429Backoff
Disquefs_usageVolume dédié

FAQ

QR
Désactiver le cache ?Seulement en debug corruption.
Xcode Cloud ?Voir cloud vs dédié.
DéterminismeChecksum du lock en CI.

Mac mini M4

NVMe rapide et mémoire unifiée pour resolve + compile. Tarifs, Aide.

CI Apple Silicon dédié

HK · JP · KR · SG · US