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 X11 Git でソースコードのバージョン管理を行うで説明しています。

iOS アプリを全てのデバイスを対象にテストする場合の注意点

iOS アプリを Bot で自動テストするときにAll iOS DevicesAll 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 X9 ビルドに必要な情報を揃えてプロジェクトを設定するで説明しています。