Issue
I try to write a Jenkinsfile to install android emulator and run some tests.
But while running sh 'avdmanager create avd -n Google_apis_30 -k "system-images;android-30;google_apis;x86_64"'
the system ask me enter "no".
If I run this script on my local android studio on windows everything is ok: image1
Then I try to write script for Jenkins.
ENV:
OS - Linux
Jenkinsfile - use Groovy
Docker
This is my Jenkinsfile:
#!/usr/bin/env groovy
node('android') {
ansiColor('xterm') {
checkout scm
stage('Build and upload') {
docker.image('androidsdk/android-30:latest').inside('-u root')
{
sh 'sdkmanager --list'
sh 'avdmanager create avd -n Google_apis_30 -k "system-images;android-30;google_apis;x86_64"'
echo 'no'
sh 'emulator -list-avds'
sh 'start /min emulator -avd Google_apis_30'
sh './gradlew clean connectedCheck --no-daemon --stacktrace'
}
archiveArtifacts 'app/build/outputs/apk/debug/*.apk'
}
Also I tried several variants of the echo
command:
echo no | android create avd -n Google_apis_30
or
sh 'echo no | avdmanager create avd -n Google_apis_30 -k "system-images;android-30;google_apis;x86_64"'
or
sh 'echo "no"'
or
echo 'no'
but Jenkins still does not past script: Jenkins_log
What's wrong?
Solution
It was funny.
I just forgot replace creating emulator command with echo
comand.
Working answer: sh 'echo no | avdmanager create avd -n Google_apis_30 -k "system-images;android-30;google_apis;x86_64"'
Initial command without "echo" will be delete.
stage('Build and upload') {
docker.image('androidsdk/android-30:latest').inside('-u root')
{
sh 'sdkmanager --list'
sh 'echo no | avdmanager create avd -n Google_apis_30 -k "system-images;android-30;google_apis;x86_64"'
sh 'emulator -list-avds'
}}
Answered By - Panarik