Jenkins と Xcode プラグインを使用して、単体テストの自動実行やレポート作成など、iOS アプリケーションの継続的な統合を実行しています。これは、Linux マシンで Jenkins を使用し、Xcode 4.6.3 を実行する Mac スレーブを使用してうまく機能しました。
現在、iOS 7 のターゲット設定をサポートするためにセットアップを Xcode 5 に更新しようとしていますが、次の問題が発生しました。
まず、Xcode 5 ではサポートされなくなった Xcode 4 の RunUnitTests スクリプトを使用していたため、単体テストがまったく実行されませんでした。Xcode で推奨されているように、ユニットで適切なスキームを使用してワークスペースを設定することで、これに対処しました。テスト対象。
次に、Jenkins ジョブの Xcode ステップを構成し、カスタム xcodebuild 引数を に設定しtest -destination platform=${DESTINATION_PLATFORM},name=${DESTINATION_NAME},OS=${DESTINATION_OS}
て、単体テストを実行できるようにしました。
自分のマシンのターミナルで Jenkins 用の Xcode プラグインが実行する xcodebuild コマンド ラインを実行すると、単体テストは実行されますが、Jenkins ジョブを実行すると、単体テストを実行しようとすると失敗するかハングします。
これは、RunUnitTests スクリプトの代わりに Xcode 5 と test buildaction を使用すると、単体テストがインタラクティブ セッションを必要とする iOS シミュレーターで実行されるようになり、Jenkins スレーブ プロセスが Jenkins マスター (Linux) から SSH 経由で実行されるためだと思われます。Jenkins が SSH に使用するアカウントでスレーブ マシンにログインしている場合、単体テストが実行されるはずのときに iOS シミュレータが起動することを確認できますが、テストが実行されていないように見え、ジョブがハングします。スレーブ マシンにログインしていない場合、Jenkins ジョブは単体テストの実行に失敗します。
iOS 単体テストを SSH 経由で Jenkins スレーブ上で実行する方法はありますか? そうでない場合は、プロジェクトを Xcode 5 でビルドする必要がある場合に単体テストの実行を自動化し続ける方法についての提案はありますか?