はじめに

CircleCIのFreeプランが2022年1月から大幅に拡張されましたが、この1月の発表に間に合わなかったのが、FreeプランでのmacOSサポートの追加です。これまでは、有償プランでのみ利用可能だった macOS Executor がFreeプランでも利用可能になったことにより、macOS上で動作するアプリケーションはもちろん、iOS, iPad OS, tvOS, watchOSで動作するアプリケーションもCircleCI上で(極論すれば、あなたがお使いのOSがWindowsやLinuxであっても)ビルドやテストすることができるようになりました。

本ブログでは、GitHub上で提供しているサンプル アプリケーションを例に取って、WindowsユーザーやLinuxユーザーでもmacOSでのビルド、テストから、アプリケーションの実行ファイルの生成までの手順をご紹介いたします。

ビルドを無料で開始

サンプルアプリケーションのclone

まずはサンプル アプリケーションのリポジトリ(CircleCI-Public/circleci-demo-macos)を自分のGitHubアカウントにForkすることにしましょう。それにより、アプリケーションやテストのコードだけでなく、config.ymlを自由に書き換えて、CircleCIでどのようなことができるかを自由に試してみることができます。

サンプルアプリのリポジトリ

私は mayoct/circleci-demo-macos にForkした上で、ローカル環境に git clone しました(ただし、master ブランチの config.yml ファイルの内容は本ブログの続編となるCircleCIランナーをmacOS上で利用したビルドやテストの為に大幅に書き変わっているため、この辺りの時点の内容をご参照ください)。

コンフィグの追加・修正

実際に動作させるために、また結果をわかりやすくする為に、config.yml に対して、次のような追加・修正を行います。

macOS Executor(Xcode)のバージョンアップ

コンフィグ内ではXcodeのバージョンを元に、macOS、およびXcodeのバージョンを指定します。サンプルアプリケーションでは、xcodeのバージョン 11.3.0 が指定されているので、これをできるだけ新しいバージョンに変更します。指定可能な値は Supported Xcode versions(英語) に記述があるので、こちらを参考にします。本ブログ用のサンプル作成時は、12.5.1 が最新だったため、そのように更新しました。

Xcodeのバージョンの指定

システム情報の追加出力

実際にどのような環境でビルドやテストが行われているのか、macOS Executorの情報を出力してみましょう。

まず、display_system_info ジョブを追加します。

macOS Executor情報を出力

次に、実際にこのジョブを実行するように、test_buildワークフローのjobsの記述を一部追加します。

test_buildワークフローのjobsの記述の追加

ワークフローの実行

それでは、リポジトリをCircleCI プロジェクトとして登録し、ワークフローを実行していきましょう。

ワークフローの実行

先ほど追加した display_system_info の結果は(本サンプルの実行時点では)次のように表示されました。macOS Executor が今回の例では仮想マシンとして動作していることがわかります。

display_system_info の結果

ビルドしたアプリケーションのローカル実行

さて、ここまでの作業をmacOS上で実行しているのであれば、buildジョブによって生成されたアプリケーションは store_artifacts でアーティファクト中に app.zip ファイルとして保存されていますので、ダウンロードして実行することができます。

app.zip ファイル

app.zip ファイルの中には、circleci-demo-macos.app という名前でアプリケーションが格納されています。ユニバーサルアプリなので、Intel Macでも、Apple Silicon搭載Macであってもネイティブ実行が可能です。ただし、普通に実行しようとすると実行不可メッセージが表示されてしまいます。

エラーメッセージ

システム環境設定のセキュリティとプライバシーから、このまま開くボタンをクリックします。再度、警告メッセージが表示されますが、そのまま先に進みます。

警告メッセージ

今回クラウド上でビルド、テスト、およびリリースしたアプリケーションは Timer アプリケーションでした。

作成したタイマーアプリ

さいごに

今回の内容はいかがでしたでしょうか? Xcode で開発した macOS アプリであれば、それほど長くない config.yml を用意するだけで、CircleCI クラウド上でビルド、テスト、リリースまでしていただけることがお分かりいただけたのではないでしょうか?

本ブログの続編では、macOS 上でCircleCI ランナーを使って、ご自身がお持ちのインフラ(Mac)を使って、CircleCI と連携したビルドやテストを実行する方法をご紹介します。これにより、CircleCI が用意した macOS Executor とは違うバージョン(例えばベータバージョン)のOSやXcodeを使用したり、Apple Sillicon (M1や M1Pro, M1 Max)環境でのビルドやテストを行うことも可能です。


まだ CircleCI をご利用いただいていない方は、ぜひこの機会にFree プランのアカウントを作成していただき、無償範囲でもかなりのことが毎月実現可能ですので、お試しください。 ビルドを無料で開始


関連記事