Amazonは最近、マネージド・ビルド・サービス CodeBuildがmacOS上でのアプリケーション・ビルドをサポートしたと発表した。しかし、Appleのライセンス要件のため、開発者はこの新しいオプションを利用するために、専用のmacOSフリート(macOS fleet)を予約する必要がある。
Appleシステム(iOS、iPadOS、watchOS、tvOS、macOS)用のアプリケーションのビルド、テスト、署名、配布には、macOSのみで動作するXcodeの使用が必要だ。Macインスタンス上でCI/CDパイプラインを実行することは常に可能だがmacOSマシンの管理と自動化は、高速化において様々な課題を出してきた。AWSのprincipal developer advocate Sébastien Stormacq氏は、次のように書いている。
1つ目は、ビルドに必要なすべてのツールを備えたAmazon Machine Image(AMI)を準備することです。最低限のビルド環境にはXcodeが必要ですが、Fastlane(およびRuby)、その他のビルドツールまたは開発ツールやライブラリをインストールすることはごく一般的です。macOSとXcodeのバージョンの、複数の組み合わせに対応する複数のビルド環境が必要です。
AWS CodeBuildは、Apache MavenやGradleなどの一般的なプログラミング言語やツール向けにパッケージ化されたビルド環境を提供する継続的インテグレーションサービスだ。ソースコードをコンパイルし、単体テストを実行し、成果物を生成する。Macビルド用の新しいCodeBuildイメージは、macOSとXcodeがプリインストールされており、Java、Kotlin、Node.js、Python、Ruby、Rust、Swiftを含む様々なツールとフレームワークをサポートしている。
CodeBuild for macOSは、今年初めに導入されたリザーブドキャパシティ機能 を利用し、遅延に敏感なシナリオのビルドとテストのために設計されたリザーブド・フリートを利用している。このサービスは、macOS 14 Sonomaを実行するApple M2インスタンス上でアーティファクトをビルドする。Stormacq氏は、AWS CodeBuild上のMacビルドが対処する2番目に大きなチャレンジについて説明する。
大規模な組織では通常、1日に数百から数千の構築を行うため、数十台のビルドマシンが必要になります。そのフリートをスケールイン/スケールアウトすることで、コスト削減に役立ちます。EC2 Macインスタンスはお客さま占有利用に向け準備されています。1台の専用ホストに1つのインスタンスが割り当てられます。専用ホストのフリートをスケールするには、特定の設定が必要です。
ビルド時間1分ごとに課金されるオンデマンドフリートとは異なり、予約フリートは、ビルドが実行されていない時間も含めて、ビルドマシンが専有利用のために予約されている全期間に対して課金される。容量予約は、macOSのSLAで要求されるAmazon EC2 Macの24時間の最小割り当て期間を遵守している。Claranetのクラウドエンジニア兼サーバーレス開発者 Piero Bozzolo氏は、次のようにコメントしている。
ビルド頻度が低い(月に数十ビルド)チームや開発者にとって、これは費用対効果が低いかもしれない。AppleがOSの24時間ミニマムリースを検討し、廃止してくれることを心から願う。
AWSのドキュメントによると、EC2 Macインスタンスの準備には8〜10分かかる。これはCodeBuildに限ったことではないが、この準備時間中に提出されたビルドはキューに入れられ、マシンが利用可能になり次第、順番に実行される。
Macビルドは現在、5つのリージョンでのみ利用可能だ。オハイオ、北部バージニア、オレゴン、フランクフルト、シドニーだ。