GitLabのCIからXCTestを使ってテストを行わせるときには、テスト環境を指定する必要があります。
macOSアプリでRunnerが動いているマシンがApple Siliconマシンであれば、ネイティブで実行するのか、Rosetta2でIntelバイナリを実行するのか。
iOSアプリのテストであれば、iOSシミュレータを使うのか、接続中の実機を使うのか。シミュレータはiPhone 13 Proなのか、iPad Airなのかなどです。
この記事では、指定方法について解説します。
GitLabのCI/CDのセットアップ方法については、次の記事を参照してください。

Macアプリの場合
xcodebuild
の-destination
オプションに渡す、platform
とarch
の値で指定します。
platform
はmacOS
を指定します。
arch
は次のいずれかを指定します。
arch | 説明 |
---|---|
x86_64
| 64bitのIntel Macバイナリ |
arm64
| Apple Silicon Macネイティブバイナリ |
GitLab CI/CDの設定ファイルの例
例えば、Apple Silicon Mac上で、Intel版、Apple Silicon版の順で両方ともテストするときの設定ファイル.gitlab-ci.yml
は次のようになります。
stages:
- build
- test
- archive
- deploy
build_project:
stage: build
script:
- xcodebuild clean -project CITestMac.xcodeproj -scheme CITestMac | xcpretty
- xcodebuild test -project CITestMac.xcodeproj -scheme CITestMac -destination 'platform=macOS,arch=x86_64' | xcpretty -s
- xcodebuild test -project CITestMac.xcodeproj -scheme CITestMac -destination 'platform=macOS,arch=arm64' | xcpretty -s
tags:
- mac
Rosetta2で実行するには
Apple Silicon Mac上でRosetta2上で動かして、Intel Mac版のバイナリをテストするには、arch
にx86_64
を指定します。
Intel Macでarm64
を指定した場合
Intel Mac上で動かすxcodebuild
にarm64
を指定した場合はエラーとなり、GitLab CIのジョブが失敗したというエラーが通知されます。
xcodebuild: error: Unable to find a destination matching the provided destination specifier:
{ platform:macOS, arch:arm64 }
Available destinations for the "CITestMac" scheme:
{ platform:macOS, arch:x86_64, id:906947B6-2F2A-5257-9AA3-A0AF24CDA8DE }
Ineligible destinations for the "CITestMac" scheme:
{ platform:macOS, name:Any Mac }
両方のバイナリをテストしたいときは、Apple Silicon Macを用意する必要があります。
iOSアプリの場合
xcodebuild
の-destination
オプションに渡す、platform
,name
, OS
の値で指定します。
platform
は実機かシミュレータかを指定します。CIから実行する場合は、実機よりもシミュレータを使うケースの方が多いのではないでしょうか。
platform | 説明 |
---|---|
iOS
| マシンに接続されているデバイスを使用する |
iOS Simulator
| iOSシミュレータを使用する |
name
は使用するシミュレータやデバイスの名前を指定します。例えば、iPhone 13
などです。
OS
はシミュレータのOSのバージョンを指定します。iOS 15.5
であれば、15.5
を指定します。
XcodeはOSのバージョンを指定してシミュレータを追加インストールできます。複数のバージョンのOSのシミュレータをインストールしておけば、複数のOS上でのテストも行えます。
OSによって挙動が違うとき、シミュレータでも挙動が変わるので、手動では難しい(というよりも手間が大変)複数バージョンでのテストが可能になります。
シミュレータの追加方法
Xcodeと一緒に標準で組み込まれているシミュレータ以外のシミュレータを追加インストールするには、次のように操作します。
(1) XcodeのメニューバーのXcode
メニューからPreferences...
を選択する。
(2) Components
タブを開く。
(3) 追加インストール可能なシミュレータがテーブル表示されるので、インストールしたいシミュレータの左横に表示された下向きの矢印ボタン(ダウンロードボタン)をクリックする。

GitLab CI/CDの設定ファイルの例
例えば、iOS 15.5
のiPhone 13のシミュレータを使いたい場合の設定ファイルは次のようになります。
stages:
- build
- test
- archive
- deploy
build_project:
stage: build
script:
- xcodebuild clean -project CITest.xcodeproj -scheme CITest | xcpretty
- xcodebuild test -project CITest.xcodeproj -scheme CITest -destination 'platform=iOS Simulator,name=iPhone 13,OS=15.5' | xcpretty -s
tags:
- mac
複数のシミュレータでテストしたいとき
script:
のところに記述するのは、Runnerに実行させたいスクリプトです。そのため、複数のシミュレータでテストしたい場合には、xcodebuild test
文の-destination
オプションの値を変更し、複数、指定します。