Bitrise上でのビルドは、すんなりとはいかないものです。
以下の記事でワークフローにiOS Device Testingステップを組み込む方法について紹介したのですが、対象が巨大で複雑化したiOSアプリとなると、うまく設定したつもりでもなかなかビルドが通らなかったりします。
iOS Device Testingステップでうまくテストが実行されないという問題に直面したときは、まずローカルでテストが実行できることを確認すると良いです。
Bitriseではなく、Firebase Test Labのドキュメントにその方法が載っていたので、簡単に紹介したいと思います。
テスト用ファイルをビルドする
BitriseのワークフローにXcode Build for testing for iOSステップを組み込むと、ビルドのログで実行されているコマンドが確認できます。
まず、このコマンドをローカルで実行し、アプリをビルドします(一部オプションとかは消してます)。
$ xcodebuild -project BambooCIApp.xcodeproj -scheme BambooCIApp -configuration Debug -destination generic/platform=iOS build-for-testing
ビルドすると、~/Library/Developer/Xcode/DerivedData
ディレクトリ配下にビルド成果物が保存されます。
私の環境では~/Library/Developer/Xcode/DerivedData/BambooCIApp-dcrfjjsqgqxqrdaitjdhnxqbvnke
というディレクトリが作成されました。
このディレクトリ配下のBuild/Products
ディレクトリには、テスト用のファイルが保存されています。
$ cd ~/Library/Developer/Xcode/DerivedData/BambooCIApp-dcrfjjsqgqxqrdaitjdhnxqbvnke/Build/Products $ ls BambooCIApp_iphoneos14.4-arm64.xctestrun Debug-iphoneos
実機でUIテストを実行する
実機をMacに接続しておきます。
実機のデバイスIDを以下のコマンドで確認します。
$ xcrun xctrace list devices == Devices == xxxxx (14.4) (8be3cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) == Simulators == ...
以下のコマンドを実行すると、実機でUIテストが実行されます。
$ xcodebuild test-without-building \ -xctestrun BambooCIApp_iphoneos14.4-arm64.xctestrun \ -destination id=8be3cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
まとめ
Bitriseでビルドが失敗したらXCodeの設定を見直し、それをプッシュして再度Bitriseでビルドする、という繰り返しは非常に非効率です。
まずはローカルで実機テストが確実に動くことを確認しておくと、Bitrise上でのビルドもスムーズに行くことでしょう。