Skip to content
Latchkey

macOS runner とは? - Apple プラットフォームの CI と、なぜコストがかかるのか

macOS runner とは macOS を実行する CI runner で、Xcode は Apple のハードウェア上でしか動作しないため、iOS、iPadOS、その他の Apple プラットフォーム向けソフトウェアの build とテストに必要です。

Apple プラットフォーム向けに出荷するなら、macOS runner が必要です。Xcode と Apple のツールチェーンは他のどこでも動作しません。これらは Apple のライセンスに根ざした理由から、CI の中で最も高価な runner でもあります。

macOS runner が存在する理由

iOS や macOS アプリの build と署名には Xcode が必要で、Xcode は Apple のハードウェア上の macOS でしか動作しません。そのため Apple プラットフォームの CI は、自由に仮想化できる Linux とは異なり、本物の Mac マシン上で実行する必要があります。

なぜ高価なのか

Apple のライセンスは macOS を Apple のハードウェア上で実行することを要求しており、そのハードウェアはデータセンターで運用するには比較的希少でコストがかかります。その結果、ホステッドの macOS 分数は通常、Linux 分数の何倍ものコストになります。

よくある制約

  • 限られた並行性: macOS のキャパシティは Linux より希少である。
  • 遅いプロビジョニング: Mac runner はコールドスタートが遅いことが多い。
  • バージョンの固定: 正しい Xcode と macOS のバージョンを一致させる必要がある。

macOS の CI を手頃に保つ

macOS の分数が最も高価であるため、キャッシュ、適切なサイジング、無駄な再実行の回避が最も効果を発揮するのがここです。flaky な build の再実行を防ぐ自己修復は、高価な macOS の時間においてとりわけ価値があります。

Apple 依存の作業とクロスプラットフォームの作業を分ける

本当に Apple に依存するステップ(Xcode の build、署名、シミュレーターのテスト)だけを macOS runner に残し、クロスプラットフォームのテストやツールは安価な Linux で実行しましょう。そうすれば、高価な macOS の分数を Mac にしかできない作業に集中させられます。

重要なポイント

  • macOS runner は macOS を実行し、iOS や Apple プラットフォームの build に必要である。
  • Xcode は Apple のハードウェア上でしか動かないため、Mac の CI は自由に仮想化できない。
  • macOS の分数は Linux の分数の何倍ものコストがかかる。
  • 高価な macOS の時間では、キャッシュと再実行の回避が最も重要になる。

関連ガイド