Oltre a utilizzare Bamboo per creare l'APK per il mio progetto Android, volevo anche utilizzare Bamboo per eseguire i test basati su JUnit su un emulatore Android. Dopo un bel po 'di "tentativi ed errori" principalmente per trovare un modo affidabile per avviare e fermare l'emulatore Android, ecco cosa mi è venuto in mente per il mio piano di costruzione Bamboo. Vedere Bamboo waits for script task to terminate, although it is run in the background per ulteriori informazioni di base sul motivo per cui prendo l'approccio descritto di seguito.
Il mio piano Bamboo ha uno stage con due lavori. I lavori vengono eseguiti utilizzando due agenti che vengono eseguiti sullo stesso sistema. Entrambi i lavori iniziano e corrono in parallelo. Un lavoro avvia l'emulatore Android utilizzando il comando dell'emulatore Android SDK. L'altro lavoro attende l'avvio dell'emulatore, crea l'app mobile, esegue i test sull'emulatore e quindi interrompe l'emulatore in esecuzione utilizzando un'attività finale che viene sempre eseguita anche se un'attività precedente nel processo di creazione non riesce.
Il lavoro dell'emulatore si "blocca" dopo l'avvio dell'emulatore perché è in attesa del completamento del processo dell'emulatore. Quando viene eseguito il processo di compilazione, l'attività finale nel processo di compilazione interrompe l'emulatore che causa il completamento del lavoro dell'emulatore perché il processo di emulazione non è più in esecuzione.
Ecco i dettagli principali attività per il lavoro composto:
primo compito è un'attività di script che attende l'emulatore per iniziare. Il comando adb -s non riuscirà a causare il fallimento di questa attività se l'emulatore non è stato avviato.
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
Il secondo e terzo compiti controllare la fonte e costruire l'applicazione utilizzando Gradle. La build esegue i test JUnit sull'emulatore in esecuzione.
La quarta attività configurata come attività finale è un'attività di script che interrompe l'emulatore.
echo "Stopping the Android emulator"
${bamboo.ANDROID_HOME}/platform-tools/adb -s emulator-5554 emu kill
Potresti condividere linee guida per creare un progetto Android utilizzando gradle qui. – CoDe
Abbiamo installato il plugin JFrog Artifactory in bamboo, ha un compito gradle build. Non devi usare JFrog per usarlo. Puoi quindi semplicemente pronunciare il nome dell'attività sotto il tipo di attività "clean assembleDebug" – bhawkins
Che ho provato ma qualcosa che non va. L'ultima volta che ho provato questo, almeno la build era in fase di avvio e di lancio, ma stavolta non è successo nulla. Fammi controllare la mia parte, tornerò presto. – CoDe