macOS での Hello World
CircleCI の macOS 実行環境で継続的インテグレーションを開始する方法について説明します。 CircleCI の基本的な操作について確認したい場合は、 入門ガイドを参照することをお勧めします。 また、「 macOS 上の iOS アプリケーションのテスト」や「 iOS プロジェクトのチュートリアル」も併せてご覧ください。
前提条件
作業を行う前に、以下を準備しておく必要があります。
- CircleCI の アカウント
- Xcode がインストールされた Apple コンピューター (サンプル プロジェクトを開く場合)
macOS Executor の概要
macOS 実行環境 (executor
) は iOS と macOS の開発用に提供されるもので、これを使用して macOS および iOS アプリケーションのテスト、ビルド、デプロイを CircleCI 上で行えます。 macOS Executor は、macOS 環境でジョブを実行し、iPhone、iPad、Apple Watch、および Apple TV の各シミュレーターへのアクセスを提供します。
macOS Executor をセットアップする前に、サンプル アプリケーションをセットアップする必要があります。
サンプルアプリケーション
このサンプルアプリケーションは簡単な mac アプリです。5分間のタイマーが実行され、単体テストが含まれています (このアプリは単に macOS 実行環境の基礎を説明することを目的としており、実際のアプリケーションはこれよりもはるかに複雑です)。
macOS 実行環境についての理解を深めていただければ、CircleCI を利用して以下のことが可能になります。
- コードをプッシュするたびに、macOS VM 上で Xcode を使用してテストを実行する
- テストが正常に完了した後、コンパイルされたアプリケーションをアーティファクトとして作成してアップロードする
サンプル アプリケーションのリポジトリは GitHub にチェック アウトできます。
下記のサンプル設定ファイルのコードを実行しテストする場合は、GitHub からサンプルアプリケーションをフォークまたは複製する必要があるのでご注意ください。 このサンプル設定ファイルが、すべての Xcode プロジェクトで動作するとは限りません。
サンプル設定ファイル
このアプリケーションでは、外部ツールや依存関係が使用されていないため、.circleci/config.yml
ファイルの内容はきわめて単純です。 各ステップの内容についてコメントを付けて説明しています。
version: 2.1
jobs: # a basic unit of work in a run
test: # your job name
macos:
xcode: 12.5.1 # indicate your selected version of Xcode
steps: # a series of commands to run
- checkout # pull down code from your version control system.
- run:
name: Run Unit Tests
command: xcodebuild test -scheme circleci-demo-macos
build:
macos:
xcode: 12.5.1 # indicate your selected version of Xcode
steps:
- checkout
- run:
# build our application
name: Build Application
command: xcodebuild
- run:
# compress Xcode's build output so that it can be stored as an artifact
name: Compress app for storage
command: zip -r app.zip build/Release/circleci-demo-macos.app
- store_artifacts: # store this build output. Read more: https://circleci.com/docs/2.0/artifacts/
path: app.zip
destination: app
workflows:
version: 2
test_build:
jobs:
- test
- build:
requires:
test
まだ CircleCI の config.yml
を編集したことがない方には、わかりにくい部分があるかもしれません。 config.yml
の動作の概要については、以降のセクションに記載しているリンク先から確認できます。
macOS でのビルドの基礎について説明しているため、上記のサンプルの config.yml
には以下の内容が含まれています。
- 使用する
executor
の指定 -
checkout
キーによるコードのプル - Xcode でのテストの実行
- アプリケーションのビルド
- アプリケーションの圧縮と
store_artifacts
キーによる保存
config.yml
ファイルの詳細については、 設定リファレンスガイドを参照してください。
Xcodeのクロスコンパイル
ユニバーサル バイナリ
Xcode は現在、x86_64
と ARM64
の両方の CPU アーキテクチャで実行できるユニバーサルバイナリの作成をサポートしています。この場合、別々の実行可能ファイルをリリースする必要はありません。 この機能は Xcode 12.2 以降でのみサポートされていますが、古い Xcode バージョンを使用して、それぞれの x86_64
と ARM64
実行可能ファイルをコンパイルすることもできます。
不要なアーキテクチャの抽出
Xcode 12.2 以降では、デフォルトでユニバーサルバイナリが作成され、 x86_64
および ARM64
ベースの CPU をサポートする実行可能ファイルにコンパイルされます。 一連の説明を削除する必要がある場合は、 ipo
ユーティリティを使って削除できます。
circleci-demo-macos
というユニバーサルバイナリからスタンドアロンの x86_64 バイナリを作成する場合は、次のコマンドを実行します。
lipo -extract x86_64 circleci-demo-macos.app/Contents/MacOS/circleci-demo-macos -output circleci-demo-macos-x86_64
次に、lipo -info circleci-demo-macos-x86_64
を使って抽出したバイナリがサポートするアーキテクチャを確認します。すると、以下が出力されます。
Architectures in the fat file: circleci-demo-macos-x86_64 are: x86_64
バイナリのクロスコンパイル
ユニバーサルバイナリは、Xcode 12.2 以降でのみサポートされていますが、バイナリのビルドに使用されるマシンのアーキテクチャ以外のアーキテクチャ用にバイナリをクロスコンパイルすることが可能です。 xcodebuild の場合、プロセスは比較的簡単です。 ARM64 バイナリをビルドするには、xcodebuild
コマンドの先頭に ARCHS=ARM64 ONLY_ACTIVE_ARCH=NO
を追加して、 xcodebuild ARCHS=ARM64 ONLY_ACTIVE_ARCH=NO ...
を読み取ります。 x86_64
のアーキテクチャの場合、ARCHS
を x86_64
に変更します。
次のステップ
macOS Executor は iOS アプリケーションのテストとビルドに広く使用されていますが、継続的インテグレーションの設定が複雑になる可能性があります。 iOS アプリケーションのビルドやテストについて詳しく知りたい場合は、以下のドキュメントをご覧ください。
また、CircleCI の機能については、以下のドキュメントを確認してください。
- 2.0 設定ファイルの概要、および
.circleci/config.yml
ファイルにおけるトップレベル キーの階層については「 コンセプト」を参照してください。 - 並列実行、順次実行、スケジュール実行、手動承認のワークフローによるジョブのオーケストレーションの例については「 ワークフローを使用したジョブのスケジュール」を参照してください。
- すべてのキーとビルド済み Docker イメージに関する詳細なリファレンスについては、それぞれ「 CircleCI を設定する」、「 CircleCI のビルド済み Docker イメージ」を参照してください。
ドキュメントの改善にご協力ください
このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。
- このページの編集をご提案ください (最初に「コントリビューションガイド」をご覧ください)。
- ドキュメントの問題点を報告する、またはフィードバックやコメントを送信するには、GitHub で issue を作成してください。
- CircleCI は、ユーザーの皆様の弊社プラットフォームにおけるエクスペリエンスを向上させる方法を常に模索しています。 フィードバックをお寄せいただける場合は、リサーチコミュニティにご参加ください。
サポートが必要ですか
CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。
または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。
CircleCI Documentation by CircleCI is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.