Les responsables plateforme et mobile qui basculent les builds iOS et macOS vers des Mac distants en 2026 commencent souvent par « enregistrer les exécuteurs d'abord, la politique après ». Cela produit des étiquettes floues, une concurrence qui sature le disque et des contextes de signature enchevêtrés. Ce guide s'adresse aux équipes qui choisissent des nœuds entre Singapour, Tokyo, Séoul, Hong Kong, US Est et US Ouest : décomposition des points de douleur, deux tableaux de plan de contrôle, extraits YAML prêts à coller, une procédure en six étapes et trois métriques de suivi, reliés à l'article capacité multi-projets et au billet SSH vs VNC pour les revues CI et le passage en caisse.
Les exécuteurs auto-hébergés exposent une vraie surface d'exécution macOS à votre orchestrateur. GitHub Actions s'appuie sur des exécuteurs au niveau dépôt ou organisation ; GitLab sur des exécuteurs projet ou groupe avec des types d'exécuteur. Si les étiquettes restent génériques (mac, ios), les workflows se disputent le même hôte ; DerivedData et les points chauds E/S s'accumulent, et les échecs ressemblent à des timeouts aléatoires plutôt qu'à une pression disque lisible. Décomposez les six familles de douleur ci-dessous avant d'ajouter des machines ou de passer au M4 Pro.
clean agressif peut blesser des projets parallèles..xcarchive ou caches de dépendances.Les tableaux suivants rendent les rôles d'exécuteur et les différences GitHub/GitLab discutables en revue d'architecture ; nous mappons ensuite le YAML et posons les étapes d'exécution.
Périmètre : l'article multi-projets couvre les files et les mix de location ; celui-ci couvre l'enregistrement du Mac et le fait que les workflows atteignent l'environnement voulu de façon fiable. Utilisez le tableau 1 en revue d'architecture.
| Dimension | Pool d'exécuteurs partagé | Hôte de build dédié |
|---|---|---|
| Jobs typiques | Lint, tests unitaires, xcodebuild léger, pas de signature production | Archives, envois TestFlight, matrices multi-simulateurs, signature stricte |
| Étiquettes | Fines : macos-14, xcode-16, no-signing, composables | Balises spécifiques au projet ; empêcher les autres dépôts de cibler le même runs-on |
| Concurrence | Parallélisme prudent + débordement de file vers des hôtes de pic | Lier le parallélisme à la télémétrie disque ; privilégier la stabilité à la saturation |
| Secrets et comptes | Utilisateur CI dédié, trousseau ou stratégie de profils partitionnés | Identité de signature fixe, responsable de rotation, piste d'audit |
| Préférer quand | Couplage faible, files courtes acceptables | Conformité, livraison client ou barrières de release exigeant des hôtes reproductibles |
Les deux peuvent piloter des Mac distants, mais l'injection des secrets, la visibilité des exécuteurs et les habitudes de cache diffèrent. Le tableau 2 aligne le vocabulaire plateforme et ingénierie (vérifiez les noms de champs dans la documentation fournisseur à jour).
| Dimension | GitHub Actions (auto-hébergé) | GitLab Runner (shell/ssh) |
|---|---|---|
| Ordonnancement | Exécuteurs dépôt/org + runs-on: [self-hosted, …] | Correspondance des tags + périmètre d'enregistrement (projet/groupe/instance) |
| Secrets | Secrets/variables, environnements ; OIDC pour identifiants cloud éphémères | Variables CI/CD, variables masquées ; surveiller l'héritage groupe et les branches protégées |
| Leviers de concurrence | Les jobs matrice exigent des plafonds côté exécuteur que vous imposez | concurrent et config par exécuteur ; éviter plusieurs exécuteurs sur un même utilisateur sans isolation |
| Pièges fréquents | Les exécuteurs auto-hébergés peuvent hériter des variables d'une session interactive | Plusieurs processus exécuteur se disputent licences Xcode ou ports |
# GitHub Actions: bind jobs to capabilities, not generic macOS
jobs:
ios_build:
runs-on: [self-hosted, macOS, xcode-16, m4-ci]
concurrency:
group: ios-${{ github.ref }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- name: Select Xcode
run: sudo xcode-select -s /Applications/Xcode_16.app
# GitLab CI: tags map to the runner on the remote Mac
ios_build:
tags: [macos, xcode16, m4-ci]
script:
- xcodebuild -version
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
Remarque : consignez dans votre runbook interne les noms d'étiquettes avec le chemin Xcode, l'autorisation de signature et le nombre maximal de jobs parallèles — évitez de recopier des workflows obsolètes.
Partez du travail amont régional du guide multi-régions et des choix d'accès du billet SSH vs VNC.
Noms de champs que vous pouvez coller dans Grafana, Datadog ou un rapport hebdomadaire.
Après deux semaines stables sur un hôte dédié, envisagez un second nœud ou un M4 Pro pour les matrices lourdes.
Addendum opérationnel : lorsque xcodebuild et la résolution des paquets Swift saturent réseau et disque ensemble, le P95 s'allonge souvent par l'indexation et les écritures de cache — pas seulement le débit compilateur. Suivez la longueur de file avec l'attente disque, pas le CPU seul. Reliez les heures en ligne des exécuteurs aux factures de location pour que la finance voie pourquoi un hôte doit rester dédié ; sinon les débats sur le pool partagé tournent sans preuve.
La virtualisation imbriquée augmente les frictions pour Metal, la signature et les flux USB ; les portables personnels dorment et se mettent à jour selon des calendriers qui cassent les jobs sans surveillance. La production sur Apple Silicon exige du bare metal dédié, des régions choisissables et des conditions de location composables avec étiquettes d'exécuteur et concurrence inscrites dans les lignes de base ops.
Des postes fragmentés suffisent rarement à soutenir des passerelles longue durée, des couches d'exécution pour agents IA ou une CI multi-dépôts : les invites de permission et les mises à jour système surprises transforment l'automatisation en échecs aléatoires. MACCOME fournit des nœuds Mac mini M4 / M4 Pro bare metal multi-régions avec des conditions flexibles — utiles comme couche d'exécution de référence pour exécuteurs auto-hébergés plus capacité de pic validée en recette. Après les billets région, SSH/VNC et multi-projets, alignez les offres sur la page tarifs et commandez la région qui suit le chemin de vos artefacts.
Pilotez avec des locations courtes dans la région primaire des artefacts avant d'étendre la base du mensuel au trimestriel ; absorbez les très courts pics avec des durées journalières ou hebdomadaires plutôt que de bloquer du cash sur le mauvais palier.
FAQ
Exécuteurs ou étiquettes en premier ?
Figez d'abord la sémantique des étiquettes et le parallélisme par exécuteur, puis observez files et disques. Ouvrez la page tarifs Mac mini et croisez avec le guide multi-régions.
Point d'alignement unique pour les secrets GitHub et GitLab ?
Tenez les secrets longue durée hors du dépôt et isolez la signature avec des utilisateurs macOS distincts. Pour les modes d'accès, lisez SSH vs VNC pour la CI et le centre d'aide location Mac mini.
Que lire ensuite pour les projets concurrents ?
Enchaînez avec capacité multi-projets et mix de location pour aligner les rôles d'exécuteur sur les jalons.