2014-09-12 34 views
5

Czy ktoś ma jakieś dobre zasoby do skonfigurowania Bamboo do tworzenia CI z projektami Android? Mam swój zestaw do pobierania źródła i kompilowania go za pomocą mrówki. Ale chciałbym wiedzieć, jak skonfigurować testy JUnit, gdzie testy są w osobnym projekcie.Android CI z Atlassian Bamboo

Dzięki

+0

Czy możesz podzielić się wytycznymi do budowy projektu Android za pomocą gradle tutaj. – CoDe

+0

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

+0

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

Odpowiedz

2

I zorientowali się, jak to zrobić za pomocą Bamboo CI oraz nowe projekty Android Studio z Gradle. Bamboo nie ma jeszcze niezłych zadań, ale możesz użyć skryptu, aby to zrobić. Ustawiliśmy nasze podstawowe zadania budowania w następujący sposób:

Kod źródłowy Kasa. Script zadanie:

  • Script Lokalizacja: Inline
  • Script ciała: gradlew.bat Test assembleDebug (nasz serwer Bamboo jest Windows więc użyć pliku bat, linux użyj polecenia test assembleDebug ./gradlew)

Następnie dodajemy ostateczny zadanie JUnit parsera i używamy linii katalogów wyniku: **/test-results/debug/* xml

Co do testów używamy testuje Robolectric Gradle, które generują. JUnit wyniki testu.

Mam nadzieję, że pomoże to każdemu, kto szuka sposobu konfiguracji Bamboo z Androidem, mam nadzieję, że dodadzą wsparcie pewnego dnia, tak jak robią dla .NET, gdzie jest to tylko jedno zadanie, które buduje i testuje. Polecenie skryptu wydaje się być hackem.

Jeśli ktoś szuka testów w stylu Ant, mogę to również udostępnić, ale mam nadzieję, że do tej pory wszyscy przenieśli się do Android Studio z zaćmienia. Powiem, że kroki wymagane dla Ant i Instrumentation zajmują dużo więcej czasu i musiałem użyć emulatora uruchomionego na serwerze, aby wykonać testy.

+1

Moje zadanie polega na wyszukiwaniu raportów testowych poza repozytorium, takich jak to: '' 'Nie można znaleźć raportów z wynikami testów w katalogu/Users//bamboo-agent-home/xml-data/build-dir/''' ' –

+0

Działa to tylko wtedy, gdy jedno urządzenie jest podłączone lub emulator jest już uruchomiony. – Roel

0

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