Vuncloud 블로그
← 현장 노트 목록

GitHub Actions macOS 러너 최적화: P95 57% 단축 + iOS CI 실전 가이드

GitHub Actions macOS / iOS CI 최적화 개요 · warm P95 14:12 → 6:05 · 토픽별 심화는 아래 내비 ·약 8분 읽기

엔지니어 팀이 GitHub Actions macOS 셀프호스트 runner와 iOS CI 성능 최적화를 검토하는 모습
GitHub Actions macOS CI가 느린가요?

GitHub Actions macOS slow, iOS CI stuck, macos-latest queued로 검색해 왔다면 이런 증상이 익숙할 겁니다:

  • 머지 전 5–10분 추가 큐 (릴리스 주에는 더 심함)
  • xcodebuild / pod install 편차가 큼 — 같은 commit인데 2–3배 차이
  • 엔지니어 체감: 「CI가 추첨 같아서 금요일 오후엔 merge 안 함」

👉 이 페이지는 개요: Benchmark 결과와 읽기 경로를 제공합니다. 큐, 빌드 편차, cache, ROI, 아키텍처 — 각각 전용 글이 있으니 필요한 토픽으로 이동하세요.

Shadow 대조 결과 (14일)
  • warm build P95: macos-latest 14:12 → 전용 Mac mini M4 6:05 (-57%)
  • : 평균 4:20 → 0
  • 분산 σ: 3:20 → 1:55 (약 -40%)

아래는 Benchmark 요약과 Shadow 빠른 시작입니다. cache YAML, 점수 모델, 아키텍처 checklist는 링크된 토픽 글에 있습니다.

TL;DR · 엔지니어용
  • warm P95 14:12 → 6:05; σ -40%; 큐 제거
  • 최적화 순서: 큐 → cold/warm 분리 → cache → 동시 실행 격리 → 하드웨어
  • 재현: Shadow 빠른 시작
TL;DR · 관리용

팀이 일 PR 20건 이상이고 macOS CI가 자주 큐에 걸린다면 → ROI 토픽 글에서 비용 모델을 채우세요. 월 빌드 50회 미만이면 macos-latest로 충분할 수 있습니다.

TL;DR · 의사결정

증상별 이동: 큐 → macos-latest가 큐에 걸리는 이유 · 빌드 편차 → iOS CI가 느릴 때 · ROI → 구매 vs 대여 · 데이터 → 이 페이지 워터폴 + benchmark.

-57%
P95 벽시계 시간
-40%
벽시계 표준편차 (분산 수렴)
187
14일 PR 대조 샘플

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-latestMac mini M4변화
P5011:385:22-54%
P9514:126:05-57%
σ3:201:55-40%
max22:408: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 빠른 시작.

샘플 분포 · 셀프호스트 warm (n=162)
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초 절감이 어디서 오는지:

P95 벽시계 워터폴 (warm build)
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:40cache 가이드를 읽으세요.

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 가이드.

  1. ios-ci.ymlios-ci-shadow.yml 복사; runs-on: [self-hosted, macos-m4-ios] job 추가
  2. 각 PR을 macos-latest동일 commit SHA로 7–14일 듀얼런
  3. 벽시계 P50/P95와 큐 시간 기록; warm build P95를 별도 산출 (정의는 iOS CI가 느린 이유?)
  4. 실패율 비교 후 구매 vs 대여 ROI 검토
Shadow 트리거 (발췌)
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 대여 ROIMac mini M4 대여. Vuncloud는 전용 M4 노드(Xcode 사전 설치, 1TB 데이터 볼륨, runner 설정 가이드)를 제공합니다.

CI/CD 온보딩 FAQ · 플랜·요금 · Mac mini M4 대여

데이터센터 노트 · iOS CI

큐 고통에서 ROI 결정까지

Benchmark · 워터폴 · 토픽 내비

토픽 내비
한정 할인 요금 보기