Jenkinsfile 用户输入 while 运行 sh 命令
Jenkinsfile user input while running sh command
我尝试编写一个 Jenkinsfile 来安装 android 模拟器和 运行 一些测试。
但是当运行宁sh 'avdmanager create avd -n Google_apis_30 -k "system-images;android-30;google_apis;x86_64"'
时系统要求我输入“否”。
如果我 运行 在本地 android 工作室 windows 上使用此脚本一切正常:
image1
然后我尝试为 Jenkins 编写脚本。
环境:
OS - Linux
Jenkinsfile - use Groovy
Docker
这是我的 Jenkins 文件:
#!/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'
}
我还尝试了 echo
命令的几种变体:
echo no | android create avd -n Google_apis_30
或
sh 'echo no | avdmanager create avd -n Google_apis_30 -k "system-images;android-30;google_apis;x86_64"'
或
sh 'echo "no"'
或
echo 'no'
但 Jenkins 仍然没有通过脚本:
Jenkins_log
怎么了?
很有趣。
我只是忘了用 echo
命令替换创建模拟器命令。
工作答案:sh 'echo no | avdmanager create avd -n Google_apis_30 -k "system-images;android-30;google_apis;x86_64"'
没有“echo”的初始命令将被删除。
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'
}}
我尝试编写一个 Jenkinsfile 来安装 android 模拟器和 运行 一些测试。
但是当运行宁sh 'avdmanager create avd -n Google_apis_30 -k "system-images;android-30;google_apis;x86_64"'
时系统要求我输入“否”。
如果我 运行 在本地 android 工作室 windows 上使用此脚本一切正常: image1
然后我尝试为 Jenkins 编写脚本。
环境:
OS - Linux
Jenkinsfile - use Groovy
Docker
这是我的 Jenkins 文件:
#!/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'
}
我还尝试了 echo
命令的几种变体:
echo no | android create avd -n Google_apis_30
或
sh 'echo no | avdmanager create avd -n Google_apis_30 -k "system-images;android-30;google_apis;x86_64"'
或
sh 'echo "no"'
或
echo 'no'
但 Jenkins 仍然没有通过脚本: Jenkins_log
怎么了?
很有趣。
我只是忘了用 echo
命令替换创建模拟器命令。
工作答案:sh 'echo no | avdmanager create avd -n Google_apis_30 -k "system-images;android-30;google_apis;x86_64"'
没有“echo”的初始命令将被删除。
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'
}}