Xcode サーバーと Bot でテストを自動化する
Bot を使ってできることや設定方法についてはChapter 16で紹介しました。ここでは、そこに掲載しきれなかったことを追記しています。
Bot が期待通りに動かない場合の対処方法
Bot を使っていく中でBot が期待どおりに動いてくれないと感じることがありました。ここでは、そんな事例と対処方法を紹介します。
Xcode サーバーで使うリポジトリで自己署名が使われている場合
Xcode サーバーが使うリポジトリが、自己署名の電子署名を使った HTTPS を使って接続するものだった場合に、Bot の実行が失敗することがありました。
自己署名の電子証明書というのは、その証明書が正しいものであるかを第三者機関に保証してもらっていない電子証明書です。電子証明書というのは身元の証明をするものですが、成り済ましを防ぐためには第三者機関の保証が必要です。これが原因で Bot の実行に失敗すると、実行ログに次のようなエラーが記録されます。
この場合は、Xcode サーバー側の/Library/Server/Xcode/Config/xcsbuildd.plist
ファイル内の<key>TrustSelfSignedSSLCertificates</key>
の次に続く値を<true/>に変更します。
これで自己署名のリポジトリに接続できるようになります。
実行タイミングを On Commit に指定した Bot が動作しない場合
実行タイミングでOn Commit
を指定した Bot
は、そのボットが登録されているブランチのコミットが更新されたときに実行されます。
ただ、対象になるのはそのブランチを管理しているリモートリポジトリなので、ローカルリポジトリをコミットしても、それをリモートリポジトリにプッシュしないとボットが実行されません。複数のリモートリポジトリを登録したり、複数のブランチを使い分けたりしている場合も、適切な場所にコミットをプッシュする必要があります。
なお、適切な場所にプッシュしても、Bot が実行されるのはそれから 2, 3 分ほど経ってから実行されるようでした。動かないと思っても数分ほど待ってみると動いてくれるかもしれません。
リポジトリやブランチについてはXcode 5 徹底解説 for iOS/OS Xの11 Git でソースコードのバージョン管理を行うで説明しています。
iOS アプリを全てのデバイスを対象にテストする場合の注意点
iOS アプリを Bot で自動テストするときにAll iOS Devices
やAll
iOS Simulators
を指定した場合、テストに失敗する場合がありました。
たとえばAll iOS Devices
を選択して、Xcode
サーバーにデバイスを接続せずに実行したときに、次のようなエラーが発生します。
iOS アプリのテストが実行できないときは、テスト対象としてSpecific Devices
を選択して、必要なテスト環境だけを選ぶようにすると良いでしょう。
実行完了のメールが届かない場合
Bot の実行完了時にメールを送信するように設定したとき、実行が完了してからメールが送信されるまでに 5 分くらいかかる場合があるようです。
しばらく待ってもメールが届かない場合は、さらにもう少し待ってみると届くかもしれません。
アーカイブの作成に失敗する場合
アーカイブを作成するように設定している Bot を実行したときに、プロビジョニングプロファイルやコード署名に関するエラーで実行に失敗する場合がありました。
このような場合は、Bot でアーカイブを作成するターゲットのBuild Settings
設定で、Release
ビルドで使用するCode Signing Identity
が制作用の電子証明書 (iOS
Developer) になっているかもしれません。
そのようなときは、それをリリース用の電子証明書 (iOS Distribution) に変更することで、アーカイブを作成できるようになるようです。
ターゲット設定の調整方法についてはXcode 5 徹底解説 for iOS/OS Xの9 ビルドに必要な情報を揃えてプロジェクトを設定するで説明しています。