Gradleで管理されたAndroidプロジェクトをJenkinsで動かすまで苦しんだのでまとめます。
Android StudioでEspressoのテストが
./gradlew connectedAndroidTest
で動いてるものとします。
Android Emulator Plugin は諦めました。 なぜか以下のメッセージを出して途中で止まります。
android completed with result NOT_BUILT
動くこともある。動かないこともある。不安定過ぎるのでエミュレーターを断念。
エミュレーターをGenymotionに置き換えました。 以下Genymotionをjenkinsで呼び出す流れ。
$ VBoxManage list vms
で作成済みのGenymotionのdeviceを表示します。こんな感じ。
"Nexus S - 4.3 - API 18 - 480x800" {209f5db1-6ec1-4dff-9f6f-515a6ece0123}
これのスナップショットを作っておきます。
$ VBoxManage snapshot "Nexus S - 4.3 - API 18 - 480x800" take "factory"
スナップショットができたら、Jenkinsの Item > Build > Execute shell に起動処理を設定します。
VBoxManage snapshot "Nexus S - 4.3 - API 18 - 480x800" restore "factory"
{GENYMOTION_DIR}/player --vm-name "Nexus S - 4.3 - API 18 - 480x800" &
sleep 60
他には、 Item > Source Code Management > Git >
Repository URL : リポジトリのURL
Branch Specifier : */develop とか
Item > User Gradle Wrapper >
Tasks : *connectedAndroidTest*
Item > Post-build Actions > Publish JUnit test result report >
Test report XMLs : **/build/androidTest-results/connected/*.xml
これで動くはずです。(きっと)
AndroidのCIに纏わる諸々の問題 – Rejasupoem
Use Genymotion with Jenkins for Android testing | Genymobile Blog