Si vous avez cherché GitHub Actions macOS slow, iOS CI stuck ou macos-latest queued, vous voyez probablement :
- 5–10 minutes de file supplémentaires avant le merge (pire en semaine de release)
xcodebuild/pod installavec variance folle — même commit, écart 2–3×- Sentiment équipe : « la CI ressemble à une loterie — on évite de merger le vendredi après-midi »
👉 Cette page est la vue d'ensemble : résultats du benchmark et chemins de lecture. File, variance de build, cache, ROI et architecture — chacun a son article dédié. Allez directement au sujet qui vous concerne.
- warm build P95 :
macos-latest14:12 → Mac mini M4 dédié 6:05 (−57 %) - File : moyenne 4:20 → 0
- Variance σ : 3:20 → 1:55 (environ −40 %)
Ci-dessous : résumé du benchmark et shadow quick start. YAML cache, modèles de scoring et checklists d'architecture se trouvent dans les articles thématiques liés.
- warm P95 14:12 → 6:05 ; σ −40 % ; file éliminée
- Ordre d'optimisation : file → séparation cold/warm → cache → isolation concurrence → matériel
- Reproduire : Shadow quick start
Si l'équipe livre 20+ PR/jour et que la file macOS CI est fréquente → lire l'article ROI et remplir le modèle de coût. Sous ~50 builds/mois, macos-latest peut suffire.
Aller au symptôme : file → Pourquoi macos-latest fait la queue · variance de build → Les builds iOS semblent lents · ROI → Acheter vs louer · données → waterfall + benchmark.
1. Pourquoi GitHub Actions macOS / CI iOS est lent ?
Les équipes restent bloquées à des endroits différents. Cette page reste au niveau vue d'ensemble — allez au sujet qui correspond à votre symptôme :
| Ce que vous cherchez | Symptôme typique | Lire |
|---|---|---|
| macos-latest queued / github actions macos slow | PR attend 4–8 min de plus ; pire en semaine de release | Pourquoi macos-latest fait la queue |
| xcodebuild slow / ios ci slow fix | Même commit : parfois 4 min, parfois 12 | Les builds iOS semblent lents |
| cocoapods cache / deriveddata cache ci | pod install oscille 3–6 minutes |
Guide cache Pods/SPM/DerivedData |
| self-hosted runner roi / mac mini ci | Acheter ou louer un Mac mini ? | Acheter vs louer (ROI) |
| self-hosted architecture / multi runner | Concurrence multi-machines, fallback, labels | Architecture auto-hébergée |
Si vous voulez seulement « combien plus rapide avec un autre runner ? », restez ici : Benchmark et waterfall.
2. Résultats benchmark : l'apport du Mac mini M4 dédié
Équipe iOS 8 personnes · CocoaPods · 25–40 PR/jour · aucun changement de code app, seul le runner change. Données warm build :
| Métrique | macos-latest | Mac mini M4 | Changement |
|---|---|---|---|
| P50 | 11:38 | 5:22 | -54% |
| P95 | 14:12 | 6:05 | -57% |
| σ | 3:20 | 1:55 | -40% |
| max | 22:40 | 8:30 | -62% |
| Taux d'échec (14 jours) | 8.0% | 3.2% | — |
Résumé environnement : équipe iOS 8 personnes · CocoaPods · 25–40 PR/jour · Xcode 16.2 aligné des deux côtés · Mac mini M4 16 Go + volume données 1 To · shadow dual-run 14 jours sur 187 PR. Séparation cold/warm : article sur la variance de build ; reproduction : Shadow quick start.
4:00–5:00 |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 52% 5:00–6:00 |■■■■■■■■■■■■■■■■■■ 28% 6:00–7:00 |■■■■■■ 10% P95 6:05 |■■■■■■■■■■■■■■
3. Cascade temps P95 : 14:12 → 6:05 (−57 %)
Le graphique partageable — d'où viennent 8m 07s d'économies :
macos-latest P95 ████████████████████████ 14:12
│
File supprimée −4:50 ████████████░░░░░░░░░░░░
cache/Pods −1:40 ████░░░░░░░░░░░░░░░░░░░░
xcodebuild −1:15 ███░░░░░░░░░░░░░░░░░░░░░
Sign/upload −0:20 █░░░░░░░░░░░░░░░░░░░░░░░
▼
self-hosted P95 ██████████ 6:05 (−57%)
La file seule ≈ −4:50 → sujet file. Cache ≈ −1:40 → guide cache.
4. Choisir l'article adapté à votre problème
Ces sujets suivent un ordre de dépannage typique — commencez par ce qui fait le plus mal :
Problème de file ? → Pourquoi macos-latest fait la queue (en préparation) → Cette page : benchmark + waterfall Temps de build très variables ? → Les builds iOS semblent lents (publié) → Guide cache Pods/SPM/DerivedData (publié) Acheter ou louer ? → Données shadow sur cette page → Acheter vs louer ROI (en préparation) → Forfaits Mac cloud / FAQ CI/CD Setup multi-runner ou fallback ? → Architecture auto-hébergée (en préparation)
5. Navigation thématique
Chaque article couvre un problème concret. Cette page regroupe la vue d'ensemble du benchmark et les liens.
| Sujet | Idéal pour | Statut |
|---|---|---|
| Pourquoi macos-latest fait la queue | PR bloquées en file d'attente | En préparation |
| Les builds iOS semblent lents | Même commit, écart de temps 2–3× | Publié |
| Accélérer la CI iOS : cache Pods/SPM/DerivedData | Copier le YAML, ajuster les clés cache | Publié |
| Un runner auto-hébergé vaut-il le coup ? | Calcul acheter vs louer un Mac cloud | En préparation |
| Architecture Mac mini auto-hébergé | Multi-runner, labels, fallback | En préparation |
Articles connexes publiés : Primer CI Mac mini M4 · ROI heures d'ingénierie · FAQ CI/CD
6. Shadow benchmark quick start
Étapes minimales de reproduction ci-dessous. Workflow complet et checklist de déploiement : sujet architecture ; YAML cache : guide cache.
- Copier
ios-ci.yml→ios-ci-shadow.yml; ajouter un job avecruns-on: [self-hosted, macos-m4-ios] - Dual-run chaque PR contre
macos-latestavec le même commit SHA pendant 7–14 jours - Enregistrer P50/P95 mural et temps de file ; calculer warm build P95 séparément (définition dans l'article sur la variance de build)
- Comparer taux d'échec, puis lire acheter vs louer ROI
on:
pull_request:
branches: [main, release/*]
jobs:
ios-hosted:
runs-on: macos-latest
ios-shadow:
runs-on: [self-hosted, macos-m4-ios]
# same steps · same SHA
7. FAQ
Combien un runner GitHub Actions macOS auto-hébergé peut-il être plus rapide que macos-latest ?
Ce run : warm build P95 −57 % (14:12→6:05), σ −40 %. Voir Benchmark ; reproduire via Shadow quick start.
Pourquoi les runners GitHub Actions macOS font-ils la queue ?
Pool hébergé partagé + forte concurrence en semaine de release. Le temps de file n'est pas facturé mais compte au temps mural. Détail complet → sujet file.
Les runners auto-hébergés sont-ils moins stables ?
Dépend de l'ops : seuils disque, supervision runner, matériel de signature. Comparez les taux d'échec en shadow ; ici taux 14 jours 8,0 % → 3,2 %. Garder macos-latest en fallback réduit le risque perçu.
Un Mac mini vaut-il le coup comme runner CI ?
À évaluer à 20+ PR/jour avec file qui empire. Sous ~50 builds/mois, l'hébergé peut suffire. Modèle de scoring et TCO → acheter vs louer ROI.
Quelles sont les limites de GitHub macos-latest ?
File partagée, workspaces éphémères, cache instable entre jobs, contention I/O concurrente. Impossible de fixer DerivedData ou d'éliminer la file.
Comment optimiser le P95 de la CI iOS ?
File → cold/warm → cache → concurrence → matériel. Pas à pas : file · variance de build · guide cache.
Comment optimiser le cache CocoaPods ?
YAML complet et design des clés → guide cache.
Combien de temps prend la migration ?
1–2 jours préparation + shadow 7–14 jours + bascule progressive 3–5 jours. Commencer shadow avec tests seulement, importer la signature ensuite.
8. Conclusion
Après le passage aux runners auto-hébergés, le warm P95 est passé de 14:12 à 6:05 avec une variance bien plus serrée. Cette page montre le benchmark et le waterfall ; file, variance de build, cache, ROI et architecture ont chacun un article dédié. Lancez un shadow dual-run avec vos propres données avant de vous engager sur du matériel dédié.
Valider le ROI, puis commander
Parcours recommandé : Shadow dual-run → acheter vs louer ROI → Louer Mac mini M4. Vuncloud propose des nœuds M4 dédiés (Xcode préinstallé, volume données 1 To, guide setup runner).
FAQ onboarding CI/CD · Forfaits et tarifs · Louer Mac mini M4