11

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 でビルドする必要がある場合に単体テストの実行を自動化し続ける方法についての提案はありますか?

4

4 に答える 4

4

SSH を使用してマスターからではなく、Mac スレーブの標準端末から jenkins スレーブを起動してみてください。

于 2013-09-23T06:27:52.903 に答える
1

GBegencoffeebreaksの回答を参照してください。Jenkins が保護されたら、別のコマンド ラインを使用して、画面共有/VNC ターミナル セッションから Jenkins を起動します。

java -jar slave.jar -jnlpUrl http://jenkins-master:port/computer/jenkins-slave/slave-agent.jnlp -secret XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
于 2013-10-01T04:40:59.930 に答える
0

@GBegenが言ったことは正しいです。私も以前はそうしていました-シミュレーターを実行し、ログアウトせずにVNCを終了しましたが、それは信頼できませんでした。私が今行っていることは、シミュレーターが実行されていない場合に実際にシミュレーターを起動するスクリプトを作成することです。Xcode 5でも壊れましたが、jenkinsユーザーをadminグループに追加して修正しました。

于 2013-09-30T20:13:18.120 に答える