Oprócz użycia Bamboo do zbudowania pakietu APK dla mojego projektu Android, chciałem również użyć Bamboo do uruchomienia testów opartych na JUnit przeciwko emulatorowi Android. Po dość "próbie i błędzie", przede wszystkim po znalezieniu niezawodnego sposobu na uruchomienie i zatrzymanie emulatora Androida, oto, co wymyśliłem, by opracować mój plan budowy Bamboo. Zobacz Bamboo waits for script task to terminate, although it is run in the background, aby uzyskać dodatkowe informacje o tym, dlaczego stosuję podejście opisane poniżej.
Mój plan Bamboo ma jeden etap z dwoma zadaniami. Zadania są uruchamiane za pomocą dwóch agentów uruchamianych w tym samym systemie. Oba zadania są uruchamiane i uruchamiane równolegle. Jedno zadanie uruchamia emulator Androida, używając polecenia emulatora Android SDK. Druga praca czeka na uruchomienie emulatora, tworzy aplikację mobilną, uruchamia testy na emulatorze, a następnie zatrzymuje uruchomiony emulator za pomocą końcowego zadania, które jest zawsze wykonywane, nawet jeśli poprzednie zadanie w zadaniu kompilacji nie powiedzie się.
Zadanie emulatora zostaje "zablokowane" po uruchomieniu emulatora, ponieważ oczekuje na zakończenie procesu emulatora. Po uruchomieniu zadania kompilacji ostateczne zadanie w zadaniu kompilacji zatrzymuje emulator, który powoduje zakończenie pracy emulatora, ponieważ proces emulatora nie jest już uruchomiony.
Oto najważniejsze szczegóły zadania dla pracy tworzenia:
pierwsze zadanie jest zadaniem skrypt, który czeka na emulator zacząć. Poniższa komenda adb -s zawiedzie, powodując niepowodzenie tego zadania, jeśli emulator się nie uruchomi.
echo "Waiting 60 seconds for the Android emulator to start"
sleep 60
echo "See if Emulator is up and running"
${bamboo.ANDROID_HOME}/platform-tools/adb -s emulator-5554 shell getprop dev.bootcomplete
Drugie i trzecie zadanie sprawdź źródło i zbuduj aplikację za pomocą Gradle. Kompilacja uruchamia testy JUnit na uruchomionym emulatorze.
Czwarte zadanie skonfigurowane jako zadanie końcowe to zadanie skryptu, które zatrzymuje emulator.
echo "Stopping the Android emulator"
${bamboo.ANDROID_HOME}/platform-tools/adb -s emulator-5554 emu kill
Czy możesz podzielić się wytycznymi do budowy projektu Android za pomocą gradle tutaj. – CoDe
Zainstalowaliśmy plugin JFrog Artifactory w bambus, ma zadanie stopniowania kompilacji. Nie musisz używać JFrog do użycia. Następnie możesz po prostu wypisać nazwę zadania w zadaniach typu "clean assembleDebug". – bhawkins
Próbowałem, ale coś poszło nie tak. Ostatnim razem, kiedy próbowałem tego, przynajmniej kompilacja zaczynała się i wyrzucała awarię, ale tym razem nic się nie działo. Pozwól, że sprawdzę swoją stronę, wkrótce cię zwrócę. – CoDe