macOS 上の iOS アプリケーションのテスト
On This Page
- サポートされている Xcode のバージョン
- はじめよう
- Xcode プロジェクトの設定
- fastlane の使用
- fastlane match によるコード署名
- Ruby の使用
- Ruby から macOS Orb への切り替え (推奨)
- Xcode 11.2 以降を使用したイメージ
- Xcode 11.1 以前を使用したイメージ
- Ruby バージョンの追加インストール
- カスタムバージョンの CocoaPods と他の Ruby gem の使用
- NodeJS の使用
- Xcode 13 以降を使用したイメージ
- Xcode 12.5 以前を使用したイメージ
- Homebrew の使用
- デプロイの設定
- トラブルシューティング
- 次のステップ
以下のセクションでは、CircleCI を使用して iOS アプリケーションのテストをセットアップおよびカスタマイズする方法について説明します。
概要
CircleCI では、 macOS 仮想マシンでの iOS プロジェクトのビルド、テスト、およびデプロイをサポートしています。 提供されている各イメージには、 Xcode と共に、 Ruby や OpenJDK などの共通のツールセットがインストールされています。 イメージの詳細については、各 Xcode イメージの ソフトウェアマニフェストを参照してください。
iOS サンプルプロジェクトと MacOS での入門に関するドキュメントをご覧ください。
サポートされている Xcode のバージョン
設定ファイル | Xcode のバージョン | macOS のバージョン | VM ソフトウェアマニフェスト | ベアメタル ソフトウェアマニフェスト | リリースノート |
---|---|---|---|---|---|
14.0.0 | Xcode 14 Beta 3 (14A5270f) | 12.4 | インストール済みソフトウェア | N/A | リリースノート |
14.0.0 | Xcode 14 Beta 2 (14A5229c) | 12.4 | N/A | インストール済みソフトウェア | リリースノート |
13.4.1 | Xcode 13.4 (13F17a) | 12.3.1 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
13.3.1 | Xcode 13.3 (13E500a) | 12.3.1 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
13.2.1 | Xcode 13.2.1 (13C100) | 11.6.2 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
13.1.0 | Xcode 13.1 (13A1030d) | 11.6.1 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
12.1.0 | Xcode 13.0 (13A233) | 11.5.2 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
12.5.1 | Xcode 10.2.1 (10E1001) | 11.4.0 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
12.4.0 | Xcode 12.4 (12D4e) | 10.15.5 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
12.3.0 | Xcode 12.3 (12C33) | 10.15.5 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
12.2.0 | Xcode 12.2 (12B45b) | 10.15.5 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
12.1.1 | Xcode 12.1.1 RC (12A7605b) | 10.15.5 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
12.0.1 | Xcode 12.0.1 (12A7300) | 10.15.5 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
11.7.0 | Xcode 11.7 (11E801a) | 10.15.5 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
11.6.0 | Xcode 11.6 (11E708) | 10.15.5 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
11.5.0 | Xcode 11.5 (11E608c) | 10.15.4 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
11.4.1 | Xcode 11.4.1 (11E503a) | 10.15.4 | インストール済みソフトウェア | インストール済みソフトウェア | リリースノート |
10.3.0 | Xcode 10.3 (10G8) | 10.14.4 | インストール済みソフトウェア | 適用外 (1) | リリースノート |
CircleCI 専有ホストでは (1) Xcode 10.3 はサポートしていません。 See the Dedicated Host for macOS page to learn more about this resource class.
Note: macOS App UI Testing is supported on Xcode 11.7 and higher
はじめよう
CircleCI Web アプリ の Projects ページで、ビルドしたい macOS プロジェクトのレポジトリを選択します。
CircleCI でのアプリケーションのビルドと署名には fastlane を使用することを強くお勧めします。 fastlaneを使うと、多くの場合が最小限の設定で簡単にビルド、テスト、デプロイプロセスを実行することができます。
Xcode プロジェクトの設定
CircleCI でプロジェクトを設定した後、 fastlane でビルドするスキームが Xcode プロジェクトで「共有」としてマークされていることを確認する必要があります。 Xcode で作成されるほとんどの新規プロジェクトでは、デフォルトのスキームはすでに「共有」としてマークされています。 これを確認する、または既存のスキームを共有するには、次の手順を実行します。
- Xcode で、[Product (プロダクト)]> [Scheme (スキーム)] > [Manage Schemes (スキーム管理)] の順に選択します。
- 共有したいスキームの [Shared (共有する)] オプションを選択し、[Close (閉じる)] をクリックします。
myproject.xcodeproj/xcshareddata/xcschemes
ディレクトリが Git リポジトリに組み込まれていることを確認し、変更をプッシュします
単純なプロジェクトであれば、最小限の設定で実行できます。 コンフィグの最小構成例は、「 iOS プロジェクトのチュートリアル」を参照してください。
fastlane の使用
fastlane は、モバイルアプリのビルドとデプロイのプロセスを自動化するためのツールセットです。 CicleCI上で fastlane を使用すると、ビルド、テスト、デプロイプロセスの設定や自動化が簡単に行えるため、ぜひご使用ください。 また、fastlane の使用によりビルドをローカルでも CircleCI 上でも同等に実行することができます。
Gemfile の追加
ローカルでも依存関係がすべてインストールされた CircleCI 上でも同じバージョンの fastlane が使用できるよう、Gemfile
をリポジトリに追加することをお勧めします。 以下に Gemfile
の簡単な例を示します。
# Gemfile
source "https://rubygems.org"
gem 'fastlane'
Gemfile
をローカルで作成したら、bundle install
を実行し、Gemfile
と Gemfile.lock
の両方をリポジトリにチェックインする必要があります。
CircleCI 上で使用する場合の fastlane のセットアップ
fastlane を CircleCI プロジェクトで使用する場合は、以下の行を Fastfile
の始めに追加することをお勧めします。
# fastlane/Fastfile
platform :ios do
before_all do
setup_circle_ci
end
...
end
以下のアクションを実行するには、setup_circle_ci
fastlane アクションを before_all
ブロック内に置く必要があります。
- fastlane match で使用する一時的なキーチェーンを新規作成する (詳細については、コード署名のセクションを参照してください)。
- fastlane match を
ランダム
モードに切り替えて、CI が新しいコード署名証明書やプロビジョニング プロファイルを作成しないようにする。 - ログやテスト結果のパスをセットアップして、それらを収集しやすくする。
CircleCI で fastlane を使用する場合の構成例
以下に、CircleCI で使用できる fastlane の基本設定を示します。
# fastlane/Fastfile
default_platform :ios
platform :ios do
before_all do
setup_circle_ci
end
desc "Runs all the tests"
lane :test do
scan
end
desc "Ad-hoc build"
lane :adhoc do
match(type: "adhoc")
gym(export_method: "ad-hoc")
end
end
上記の設定は、以下の CircleCI の設定ファイルと組み合わせて使用できます。
# .circleci/config.yml
version: 2.1
jobs:
build-and-test:
macos:
xcode: 12.5.1
environment:
FL_OUTPUT_DIR: output
FASTLANE_LANE: test
steps:
- checkout
- run: bundle install
- run:
name: Fastlane
command: bundle exec fastlane $FASTLANE_LANE
- store_artifacts:
path: output
- store_test_results:
path: output/scan
adhoc:
macos:
xcode: 12.5.1
environment:
FL_OUTPUT_DIR: output
FASTLANE_LANE: adhoc
steps:
- checkout
- run: bundle install
- run:
name: Fastlane
command: bundle exec fastlane $FASTLANE_LANE
- store_artifacts:
path: output
workflows:
build-test-adhoc:
jobs:
- build-and-test
- adhoc:
filters:
branches:
only: development
requires:
- build-and-test
環境変数 FL_OUTPUT_DIR
は、fastlane ログと署名済み .ipa
ファイルを保存するアーティファクトディレクトリです。 この環境変数を使用して、自動的にログを保存し、fastlane からアーティファクトをビルドするためのパスを store_artifacts
ステップで設定します。
fastlane match によるコード署名
ローカルでも CircleCI 環境下でもコード署名のプロセスを簡易化し自動化することができるため、iOS アプリケーションの署名には fastlane match のご使用をお勧めします。
fastlane match の使用に関する詳細は、 iOS コード署名に関するドキュメント をご覧ください
Ruby の使用
CircleCI の macOS イメージには、複数のバージョンの Ruby が格納されています。 すべてのイメージにおいて、Ruby がデフォルトで使用されています。 また、イメージがビルドされた時点において最新バージョンの動作が安定している Ruby も含まれています。 CircleCI では、 Ruby-Lang.org のダウンロードページを基に、動作が安定している Ruby のバージョンを判断しています。 各イメージにインストールされている Ruby のバージョンは、 各コンテナのソフトウェア マニフェストに記載されています。
マニフェストで「available to chruby (chruby で使用可)」と説明されている Ruby のバージョンでは、 chruby
を使用してステップを実行できます。
注: システムディレクトリに適用されるアクセス許可が制限されるため、システムのRuby を使って Gems をインストールすることは推奨しません。 通常、すべてのジョブに対して Chrudy が提供する代替の Ruby の使用を推奨しています。
Ruby から macOS Orb への切り替え (推奨)
公式の macOS Orb (バージョン 2.0.0
以降) を使用すると、ジョブ内で Ruby から簡単に切り替えることができます。 どの Xcode イメージを使用していても、適切な切り替えコマンドが自動的に使用されます。
まずは、Orb を設定の一番最初に含めます。
# ...
orbs:
macos: circleci/macos@2
次に、必要なバージョン番号と共に switch-ruby
コマンドを定義します。 たとえば、Ruby 2.6 に切り替える場合は、
steps:
# ...
- macos/switch-ruby:
version: "2.6"
2.6
をソフトウェアマニフェストファイルから必要なバージョンに変更してください。 3.0.2
のように Ruby のフルバージョンを記載する必要はなく、 メジャーバージョンのみで問題ありません。 そうすることで、設定を壊すことなく Ruby の新しいパッチバージョンの新しいイメージに切り替えることができます。
デフォルトの Ruby (macOS に Apple が搭載した Ruby) に戻すには、version
を system
として定義します。
steps:
# ...
- macos/switch-ruby:
version: "system"
注: Xcode 11.7 以降のイメージでは、デフォルトで chruby を使用した Ruby 2.7 に設定されています。 Xcode 11.6 以前のイメージでは、デフォルトで Ruby に設定されています。
Xcode 11.7 以降を使用したイメージ
Ruby の別のバージョンに切り替えるには、ジョブの最初に以下を追加します。
steps:
# ...
- run:
name: Ruby バージョンの設定
command: sed -i '' 's/^chruby.*/chruby ruby-3.0/g' ~/.bash_profile
3.0
を必要な Ruby バージョンに変更します。3.0.2
のように Ruby のフルバージョンを記載する必要はなく、 メジャーバージョンのみで問題ありません。 そうすることで、設定を壊すことなく Ruby の新しいパッチバージョンの新しいイメージに切り替えることができます。
元の Ruby に戻すには、ジョブの最初に以下を追加します。
steps:
# ...
- run:
name: Ruby バージョンの設定
command: sed -i '' 's/^chruby.*/chruby system/g' ~/.bash_profile
Xcode 11.2 以降を使用したイメージ
使用する Ruby のバージョンを指定するには、次のように ~/.bash_profile
にchruby
機能を追加します。
steps:
# ...
- run:
name: Ruby バージョンの設定
command: echo 'chruby ruby-2.6' >> ~/.bash_profile
2.6
を必要な Ruby バージョンに変更します。2.6.5
のように Ruby のフルバージョンを記載する必要はなく、 メジャーバージョンのみで問題ありません。 そうすることで、設定を壊すことなく Ruby の新しいバージョンの新しいイメージに切り替えることができます。
Xcode 11.1 以前を使用したイメージ
使用する Ruby のバージョンを指定するには、chruby
に記載されているように .ruby-version
という名前のファイルを作成します。 これは以下のようにジョブステップで実行できます。
steps:
# ...
- run:
name: Ruby バージョンの設定
command: echo "ruby-2.4" > ~/.ruby-version
2.4
を必要な Ruby バージョンに変更します。2.4.9
のように Ruby のフルバージョンを記載する必要はなく、 メジャーバージョンのみで問題ありません。 そうすることで、設定を壊すことなく Ruby の新しいバージョンの新しいイメージに切り替えることができます。
Ruby バージョンの追加インストール
注: Ruby バージョンを追加インストールするにはかなりの時間を要します。 デフォルトでイメージにインストールされていな特定のバージョンを使用する必要がある場合のみ行うことを推奨します。
プリインストールされていない Ruby のバージョンでジョブを実行するには、必要なバージョンの Ruby をインストールする必要があります。 必要なバージョンの Ruby をインストールするには、 ruby-install ツールを使用します。 インストールが完了したら、上記の方法でバージョンを選択することができます。
カスタムバージョンの CocoaPods と他の Ruby gem の使用
ローカルで使用しているバージョンの CocoaPods を CircleCI のビルドでも使用するには、iOS プロジェクトで Gemfile を作成し、そこに CocoaPods バージョンを追加することをお勧めします。
source 'https://rubygems.org'
gem 'cocoapods', '= 1.3.0'
次に、Bundler を使用してインストールします。
steps:
- restore_cache:
key: 1-gems-{{ checksum "Gemfile.lock" }}
- run: bundle check || bundle install --path vendor/bundle --clean
- save_cache:
key: 1-gems-{{ checksum "Gemfile.lock" }}
paths:
- vendor/bundle
また、コマンドにプレフィックス bundle exec
を付加しておくと、確実に使用できるようになります。
# ...
steps:
- run: bundle exec pod install
NodeJS の使用
Xcode イメージには少なくとも一つのバージョンの NodeJS が使用可能な状態で提供されています。
Xcode 13 以降を使用したイメージ
Xcode 13 以降を使用したイメージには、nvm
が管理する NodeJS がインストールされており、イメージがビルドされた時点で最新の current
と lts
リリースが常に提供されます。 また、lts
はデフォルトの NodeJS バージョンとして設定されています。
インストールされている NodeJS バージョンに関する情報は、 イメージのソフトウェアマニフェストをご覧になるか、またはジョブの中で nvm ls
を実行してください。
以下のコマンドで current
バージョンをデフォルトに設定します。
# ...
steps:
- run: nvm alias default node
lts
リリースに戻すには、以下を実行します。
# ...
steps:
- run: nvm alias default --lts
特定の NodeJS をインストールし使用しするには、以下を実行します。
# ...
steps:
- run: nvm install 12.22.3 && nvm alias default 12.22.3
これらのイメージは、 NodeJS のインストールとキャッシュパッケージの管理に役立つ公式の CircleCI Node Orb とも互換性があります。
Xcode 12.5 以前を使用したイメージ
Xcode 12.5 以前を使用したイメージには、少なくとも1つのバージョンの NodeJS が brew
を直接使用してインストールされています。
インストールされている NodeJS バージョンに関する情報は、 イメージのソフトウェアマニフェストをご覧ください。
キャッシュパッケージと一緒に nvm
をインストールすることにより、これらのイメージは NodeJS のインストールの管理に役立つ公式の CircleCI Node Orb とも互換性を持つようになります。
Homebrew の使用
CircleCI には Homebrew がプリインストールされているため、brew install
を使用するだけで、ビルドに必要なほぼすべての依存関係を追加できます。 例えば下記のようにします。
# ...
steps:
- run:
name: Install cowsay
command: brew install cowsay
- run:
name: cowsay hi
command: cowsay Hi!
必要な場合は、sudo
コマンドを使用して、Homebrew 以外のカスタマイズも実行できます。
デプロイの設定
アプリケーションのテストと署名が完了したら、App Store Connect や TestFlight など、任意のサービスへのデプロイを設定できます。 fastlane の設定例を含むさまざまなサービスへのデプロイ方法の詳細は、 iOS アプリケーション デプロイガイドをご覧ください。
トラブルシューティング
ジョブの実行中にビルドが失敗した場合は、 サポートセンターのナレッジベースで一般的な問題の解決方法を確認してください。
次のステップ
- CircleCI で fastlane を使用して iOS プロジェクトをビルド、テスト、署名、およびデプロイする完全なサンプルについては、
circleci-demo-ios
の GitHub リポジトリ を参照してください。 - 設定ファイルの詳しい説明については、 iOS プロジェクトのチュートリアルを参照してください。
- fastlane match をプロジェクトに設定する方法は iOS コード署名に関するドキュメントを参照してください。
ドキュメントの改善にご協力ください
このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。
- このページの編集をご提案ください (最初に「コントリビューションガイド」をご覧ください)。
- ドキュメントの問題点を報告する、またはフィードバックやコメントを送信するには、GitHub で issue を作成してください。
- CircleCI は、ユーザーの皆様の弊社プラットフォームにおけるエクスペリエンスを向上させる方法を常に模索しています。 フィードバックをお寄せいただける場合は、リサーチコミュニティにご参加ください。
サポートが必要ですか
CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。
または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。
CircleCI Documentation by CircleCI is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.