首页 > 解决方案 > 我如何忽略 jenkinsfile 中 shell 命令的连续日志以进入下一步/阶段?

问题描述

我使用 jenkinsfile 在 docker 容器内运行模拟器设备,命令之一是启动模拟器,输出是连续的日志流,如下所示。

+ docker exec mycontainer emulator -avd pixel

emulator: ERROR: AdbHostServer.cpp:102: Unable to connect to adb daemon on port: 5037

pulseaudio: Failed to initialize PA contextaudio: Could not init `pa' audio driver

emulator: ERROR: AdbHostServer.cpp:102: Unable to connect to adb daemon on port: 5037.....etc

问题是詹金斯一直在等待这一步结束,但它永远不会结束,所以我怎么能忽略日志并使詹金斯进入下一阶段。

这是样本

stage('Building Docker') {
  steps {
     sh label: 'Creating Appium container', script: 'docker run --privileged -d -p 4750:4723 --name mycontainer amrka/ultimate:latest'
     sh label: 'Building Emulator', returnStdout: true(i try it with false as well), script: 'docker exec mycontainer emulator -avd pixel'
          }
}

标签: shelljenkinsjenkins-pipelinepipeline

解决方案


通过添加解决

shell脚本文件中的模拟器命令并使用-d标志执行,如下所示

sh (label: 'Building Emulator', returnStdout: true, script: "docker exec -d --privileged ${containerName} bash -c './root/start_emu.sh'")

推荐阅读