GitHub Actions macOS CI가 느린 게 정상일까?queue time은 얼마나 심각할까

push 후 Workflow가 30분째 노란색? xcodebuild가 아니라 macOS runner queue 때문일 수 있습니다.

Cloud Mac AI Stack · L1  ·  2026.06.08  ·  약 12분

GitHub Actions macOS CI queue time과 self-hosted runner 비교

GitHub Actions의 macOS CI가 너무 느린데, 이게 정상일까요?

Hosted macos-latest에서는 정상에 가깝습니다. 병목은 CPU보다 queue에서 먼저 생깁니다.

이 글은 L1 시리즈 2편으로, self-hosted runner vs macos-latest를 queue, GitHub Actions billing, xcodebuild 기준으로 비교합니다.

이런 질문으로 들어오셨나요?

필요한 섹션만 바로 보세요.

핵심 용어 3개

macOS CI = Xcode/Apple Silicon必須ジョブ · Cloud Mac = 常時稼働macOS基盤(L0) · self-hosted runner = GitHub Actionsジョブを取る実行プロセス(L1)

Cloud Macを借りるだけではrunnerは増えません。runnerを入れるだけでもCIは無料になりません。GitHub Actions billingCloud Mac費用+運用へ置き換える話です。

self-hosted runner vs macos-latest: macOS CI 3가지 선택

見るべきはベンチマークではなく、wall-clockとqueue timeの安定性です。

비교 항목 Hosted macos-latest Cloud Mac self-hosted runner 로컬 Mac self-hosted runner
CIコストモデル 従量課金(GitHub Actions billing Cloud Mac月額 + 軽い運用 ハード購入 + 電力
build queue / 待ち ピーク時は20-40分以上が珍しくない 専有ノードでqueueほぼなし オンラインならqueueなし
xcodebuild安定性 ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
Apple Silicon CI 共有プール・毎回クリーン環境 Xcode/証明書/DerivedDataを固定可能 Cloud Macと同様
向いているケース 低頻度CI・待ち許容 毎日iOS CI・待ちたくない Mac miniを24/7で維持済み

macOS CI의 가장 큰 비용은 CPU가 아니라 queue time

Actionsログでxcodebuildが18分だと、マシンが遅いと誤解しがちです。実際の損失はその前、Queuedの待ち時間です。

iOS開発ではwall-clock = queue time + build time + retry。Hosted macos-latestは平日ピークのqueueが読めず、請求書には出ない待ち時間損失が速度を削ります。

まず切り分けましょう。遅いのはqueueかcompileか? queue起因ならself-hosted runnerが効き、compile起因ならXcode設定や依存・キャッシュ最適化です。

GitHub Actions iOS CI가 stuck in queue 되는 이유

macos-latestはGitHubの共有macOS runner pool上で動くため、供給より需要が勝ちやすいです。

  • iOS CIはmacOS必須ubuntu-latestへ逃がせない
  • 時間帯ピークが重なる。米欧朝とアジア午後でpushが集中
  • 並列を増やしても待つ。3ジョブ同時でも3倍速ではなく3本待ちになりがち
  • 実行後は分課金継続xcodebuild分はそのままGitHub Actions billing

PRレビュー後もChecksが黄色のまま、という体験はよくあります。コード不具合ではなくrunner未割当。Hostedで遅いのは設定ミスより構造要因です。

자주 보는 오해 2가지

오해 1: Cloud Mac만 있으면 CI가 자동으로 빨라진다

Cloud Macは常時稼働のmacOS基盤です。queue解消にはself-hosted runner登録と正しいruns-onラベルが必要です。

오해 2: self-hosted runner = 무료 CI

GitHubの分課金は減っても、Cloud Mac費用、証明書管理、運用当番は自社負担です。無料化ではなくTCOの移動です。

Cloud Mac self-hosted runner의 실제 TCO

単価だけでなく、macOS分課金 + queue待ち人件費 + 運用時間で比較します。

1) Hosted macos-latest

課金は実行分中心(macOS単価はLinuxより高い)。運用は軽い一方、build queueは制御不可です。

まずActionsのBillingで直近30日macOS CI分数を確認。月200分未満でqueue許容ならHostedが最も簡単です。

2) Cloud Mac + self-hosted runner

コストはCloud Mac月額 + 初期設定(約1-2時間)+ 保守。代わりにqueue timeがほぼゼロの専有Apple Silicon CIを得られます。

目安はL1-Q01と同様。週10ジョブ以上かつqueue疲れがあるなら、固定費型TCOが「従量+待ち損失」を下回りやすいです。料金はプラン一覧へ。

3) ローカルMac mini + self-hosted runner

コストはハード + 電力 + 24/7稼働保証Mac mini vs Cloud Macの観点で、既にMacを常時運用しているなら自然な選択です。

TCO 간단 공식
Hosted月次 ≈ macOS CI minutes × per-minute rate + queue待ちの人件費

Cloud Mac月次 ≈ 月額 + 軽い運用(queue timeが安定)

Hosted月次がCloud Mac月額を継続的に超えるなら、self-hosted(cloud/local)を検討

self-hosted runner vs macos-latest: queue와 xcodebuild 실제 차이

self-hostedは常にCPU最速とは限りません。ただしqueueが消えるため、wall-clockは多くの場合短く安定します。

  • queue time:共有pool vs 専有runnerの差が最大
  • xcodebuild:ディスク状態と初期化条件が揃いやすく、iOS CI build timeの分散が下がる
  • concurrency:単一self-hostedは通常1ジョブ。Hostedは並列可能でもmacOSはqueue影響を受ける
  • environment:Xcode/Keychain/DerivedDataを固定できる

RunnerとOllama/Claude Codeを同居させてSwapが出る場合は、ワークロード分離も確認。遅さの原因がqueueではなくメモリ競合のことがあります。

Cloud Mac self-hosted runner가 특히 유효한 경우

  • 毎日1本以上のiOS CIがあり、build queueに疲れている
  • xcodebuild・署名・notarize・TestFlightを頻繁に回す
  • push後5-15分でChecksの赤緑を確定させたい
  • 同じCloud MacでClaude CodeとCIを統合したい

この段階の問いは「self-hostedにするか」ではなく、Cloud MacかローカルMacかです。

macos-latest를 유지하는 게 더 나은 경우

  • 月1-2回程度のarchiveで、たまのqueueを許容できる
  • 主ワークフローはLinuxで緑、macOS jobは少ない
  • iOSパイプライン検証フェーズで、まずHostedで十分
  • runner更新・token更新・ディスク清掃を持つ担当がいない

같은 Cloud Mac에서 Claude Code + Runner 가능할까?

可能です。日中にClaude Code、夜間に重いxcodebuildへ分離すると安定します。16GB環境でOllama+Runner+Agent同時高負荷はSwapでCIを落とすことがあります。Claude CodeはDiff、GitHub RunnerはFactを作る役割分担が現実的です。

queue를 더 못 버틸 때 의사결정 트리

macOS CI 느림 -> 다음 액션
workflowにmacOS / Xcodeは必須か?
        ↓
      No → Linux hostedを継続

      Yes → build queue(20-40分)を許容できるか?
            ↓
          Yes → macos-latest継続
          No → 月あたりmacOS jobが約10件超?
                ↓
              No → hosted継続でBilling監視
              Yes → 24/7オンラインが必要?
                    ↓
                  Yes → Cloud Mac self-hosted runner
                  No → ローカルMac self-hosted runner(常時起動)

実務的には、Hostedを維持しつつ2週間Cloud MacでAB比較し、queue timeGitHub Actions billingxcodebuildのwall-clockで判断するのが安全です。

FAQ

GitHub ActionsのmacOS CIが遅いのは普通?
Hosted macos-latestでは珍しくありません。ピーク時のqueue 20-40分は現場でよく見ます。

なぜmacos-latestはQueuedになりやすい?
共有macOS poolの供給不足と、iOS CIがmacOS必須で逃げ先がないためです。

self-hosted runnerは本当に価値がある?
毎日iOS CIを回しqueue許容が低いなら価値が高いです。低頻度ならHosted継続が合理的です。

Cloud MacでCIは速くなる?
CPUが必ず速いとは限りませんが、queue timeが大幅に減りwall-clockは安定しやすいです。

self-hosted runnerは無料CI?
無料ではありません。GitHub課金の代わりにCloud Mac費用と運用コストが発生します。

iOS CIのbuild timeが安定しない理由は?
queue揺らぎと環境揺らぎです。self-hostedでは環境固定でブレを抑えられます。

Claude Codeと同じマシンで回せる?
可能です。ピーク負荷を分離し、メモリ競合を避ける運用が前提です。

macOS CI가 느릴 때는 먼저 queue 지연인지 build 지연인지 분리해서 보고, 필요하면 Cloud Mac self-hosted runner로 단계 전환하는 것이 가장 빠릅니다.

build queue가 지겹다면

Cloud Mac을 2주 테스트하고 queue time과 청구를 비교하세요

専有Apple Silicon macOSでself-hosted GitHub Actions runnerを構成し、macos-latestのbuild queueから抜け出せます。GitHub Actions billingxcodebuildのwall-clockを比較してから固定化してください。

Cloud Mac 요금 보기
macOS CI Cloud Mac 가격