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 の時間では、キャッシュと再実行の回避が最も重要になる。