GitHub Actions macOS slow, iOS CI stuck, macos-latest queued로 검색해 왔다면 이런 증상이 익숙할 겁니다:
- 머지 전 5–10분 추가 큐 (릴리스 주에는 더 심함)
xcodebuild/pod install편차가 큼 — 같은 commit인데 2–3배 차이- 엔지니어 체감: 「CI가 추첨 같아서 금요일 오후엔 merge 안 함」
👉 이 페이지는 개요: Benchmark 결과와 읽기 경로를 제공합니다. 큐, 빌드 편차, cache, ROI, 아키텍처 — 각각 전용 글이 있으니 필요한 토픽으로 이동하세요.
- warm build P95:
macos-latest14:12 → 전용 Mac mini M4 6:05 (-57%) - 큐: 평균 4:20 → 0
- 분산 σ: 3:20 → 1:55 (약 -40%)
아래는 Benchmark 요약과 Shadow 빠른 시작입니다. cache YAML, 점수 모델, 아키텍처 checklist는 링크된 토픽 글에 있습니다.
- warm P95 14:12 → 6:05; σ -40%; 큐 제거
- 최적화 순서: 큐 → cold/warm 분리 → cache → 동시 실행 격리 → 하드웨어
- 재현: Shadow 빠른 시작
팀이 일 PR 20건 이상이고 macOS CI가 자주 큐에 걸린다면 → ROI 토픽 글에서 비용 모델을 채우세요. 월 빌드 50회 미만이면 macos-latest로 충분할 수 있습니다.
증상별 이동: 큐 → macos-latest가 큐에 걸리는 이유 · 빌드 편차 → iOS CI가 느릴 때 · ROI → 구매 vs 대여 · 데이터 → 이 페이지 워터폴 + benchmark.
1. GitHub Actions macOS / iOS CI가 느린 이유
팀마다 막히는 지점이 다릅니다. 이 페이지는 개요 수준에 머물고, 증상에 맞는 토픽으로 이동하세요:
| 검색하는 내용 | 전형적 증상 | 읽을 곳 |
|---|---|---|
| macos-latest queued / github actions macos slow | PR이 4–8분 더 기다림, 릴리스 주에는 더 심함 | macos-latest가 큐에 걸리는 이유 |
| xcodebuild slow / ios ci slow fix | 같은 commit인데 4분일 때도 12분일 때도 있음 | iOS CI가 느릴 때 |
| cocoapods cache / deriveddata cache ci | pod install이 3–6분 사이로 출렁 |
Pods/SPM/DerivedData cache 가이드 |
| self-hosted runner roi / mac mini ci | Mac mini를 살까 빌릴까? | 구매 vs 대여 ROI |
| self-hosted architecture / multi runner | 다중 머신 동시 실행, fallback, 라벨 설계 | 셀프호스트 아키텍처 |
「runner를 바꾸면 얼마나 빨라지나?」만 알고 싶다면 이 페이지의 Benchmark와 워터폴에 머무르세요.
2. Benchmark 결과: 셀프호스트 Mac mini M4 효과
8인 iOS 팀 · CocoaPods · 일 PR 25–40 · 앱 코드 변경 없음, runner 교체만. warm build 핵심 데이터:
| 지표 | macos-latest | Mac mini M4 | 변화 |
|---|---|---|---|
| P50 | 11:38 | 5:22 | -54% |
| P95 | 14:12 | 6:05 | -57% |
| σ | 3:20 | 1:55 | -40% |
| max | 22:40 | 8:30 | -62% |
| 실패율 (14일) | 8.0% | 3.2% | — |
환경 요약: 8인 iOS 팀 · CocoaPods · 일 PR 25–40 · 양쪽 Xcode 16.2 정렬 · Mac mini M4 16GB + 1TB 데이터 볼륨 · 14일 187 PR shadow 듀얼런. cold/warm 분리: 빌드 편차 글; 재현: Shadow 빠른 시작.
4:00–5:00 |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 52% 5:00–6:00 |■■■■■■■■■■■■■■■■■■ 28% 6:00–7:00 |■■■■■■ 10% P95 6:05 |■■■■■■■■■■■■■■
3. P95 시간 워터폴: 14:12 → 6:05 (-57%)
공유하기 좋은 핵심 차트 — 8분 07초 절감이 어디서 오는지:
macos-latest P95 ████████████████████████ 14:12
│
큐 제거 −4:50 ████████████░░░░░░░░░░░░
cache/Pods −1:40 ████░░░░░░░░░░░░░░░░░░░░
xcodebuild −1:15 ███░░░░░░░░░░░░░░░░░░░░░
서명/업로드 −0:20 █░░░░░░░░░░░░░░░░░░░░░░░
▼
self-hosted P95 ██████████ 6:05 (−57%)
큐만 ≈ −4:50 → 큐 토픽을 읽으세요. cache ≈ −1:40 → cache 가이드를 읽으세요.
4. 문제에 맞는 글 고르기
아래는 일반적인 트러블슈팅 순서입니다 — 가장 아픈 곳부터 시작하세요:
큐가 고통스럽다면? → macos-latest가 큐에 걸리는 이유 (준비 중) → 이 페이지: benchmark + 워터폴 빌드 시간이 들쭉날쭉? → iOS CI가 느릴 때 (게시됨) → Pods/SPM/DerivedData cache 가이드 (게시됨) 구매 vs 대여를 결정? → 이 페이지의 Shadow 데이터 → 구매 vs 대여 ROI (준비 중) → Cloud Mac 플랜 / CI/CD FAQ 멀티 runner·fallback? → 셀프호스트 아키텍처 (준비 중)
5. 토픽 내비
각 글은 하나의 구체적 문제를 다룹니다. 이 페이지는 Benchmark 개요와 링크를 제공합니다.
| 토픽 | 이런 분께 | 상태 |
|---|---|---|
| macos-latest가 큐에 걸리는 이유 | PR이 큐에서 대기 | 준비 중 |
| iOS CI가 느릴 때 | 같은 commit인데 빌드 시간 2–3배 차이 | 게시됨 |
| iOS CI 가속: Pods/SPM/DerivedData cache | YAML 복사, cache key 튜닝 | 게시됨 |
| 셀프호스트 runner 가치가 있는가 | 구매 vs Cloud Mac 대여 계산 | 준비 중 |
| 셀프호스트 Mac mini 아키텍처 | 멀티 runner, 라벨, fallback | 준비 중 |
게시된 관련 글: Mac mini M4 CI 입문 · 공수 ROI · CI/CD FAQ
6. Shadow benchmark 빠른 시작
아래는 최소 재현 절차입니다. 전체 workflow와 롤아웃 checklist: 아키텍처 토픽; cache YAML: cache 가이드.
ios-ci.yml→ios-ci-shadow.yml복사;runs-on: [self-hosted, macos-m4-ios]job 추가- 각 PR을
macos-latest와 동일 commit SHA로 7–14일 듀얼런 - 벽시계 P50/P95와 큐 시간 기록; warm build P95를 별도 산출 (정의는 iOS CI가 느린 이유?)
- 실패율 비교 후 구매 vs 대여 ROI 검토
on:
pull_request:
branches: [main, release/*]
jobs:
ios-hosted:
runs-on: macos-latest
ios-shadow:
runs-on: [self-hosted, macos-m4-ios]
# 동일 steps · 동일 SHA
7. FAQ
GitHub Actions macOS 셀프호스트 runner는 macos-latest보다 얼마나 빨라지나요?
이번 warm build P95 -57% (14:12→6:05), σ -40%. Benchmark 참고; 재현은 Shadow 빠른 시작.
GitHub Actions macOS runner가 큐에 걸리는 이유는?
공유 호스팅 풀 + 릴리스 주간 높은 동시 실행. 큐는 과금 대상이 아니지만 벽시계에는 포함. 상세 → 큐 토픽.
셀프호스트 runner가 더 불안정한가요?
운영에 달림: 디스크 워터마크, runner 감시, 서명 자료. Shadow 기간 실패율 비교; 본 사례 14일 8.0% → 3.2%. macos-latest를 fallback으로 두면 심리적 리스크를 낮출 수 있습니다.
Mac mini를 CI runner로 쓸 가치가 있나요?
일 PR 20건 이상이고 큐가 악화될 때 검토할 가치가 있습니다. 월 빌드 50회 미만이면 호스팅으로 충분할 수 있습니다. 점수 모델과 TCO → 구매 vs 대여 ROI.
GitHub macos-latest의 한계는?
공유 큐, 단명 워크스페이스, job 간 불안정 cache, 동시 I/O 경합. DerivedData 고정이나 큐 제거는 불가.
iOS CI P95는 어떻게 최적화하나요?
큐 → cold/warm → cache → 동시 실행 → 하드웨어. 단계별: 큐 · 빌드 편차 · cache 가이드.
CocoaPods cache는 어떻게 최적화하나요?
전체 YAML과 key 설계 → cache 가이드.
이전에 얼마나 걸리나요?
준비 1–2일 + Shadow 7–14일 + 점진적 롤아웃 3–5일. 먼저 test만 Shadow, 서명은 나중에 가져옵니다.
8. 결론
셀프호스트 runner로 전환 후 warm P95가 14:12에서 6:05로 줄었고 분산도 크게 수렴했습니다. 이 페이지는 benchmark와 워터폴을 보여 주며, 큐, 빌드 편차, cache, ROI, 아키텍처는 각각 전용 글에서 다룹니다. 전용 하드웨어를 도입하기 전에 Shadow 듀얼런으로 팀 데이터를 먼저 확보하세요.
ROI 확인 후 주문
권장 경로: Shadow 듀얼런 → 구매 vs 대여 ROI → Mac mini M4 대여. Vuncloud는 전용 M4 노드(Xcode 사전 설치, 1TB 데이터 볼륨, runner 설정 가이드)를 제공합니다.