我们在 Jenkins 构建脚本中有一个步骤,它尝试使用如下命令从设备上卸载一些单元测试:
adb uninstall com.company.test
如果我们通常连接到构建机器的物理设备由于某种原因不存在或关闭,则构建将挂起:
waiting for device -
有谁知道如何解决这个问题?我听说过一些插件的传闻?理想情况下,我们希望它在一段时间后发出警告,然后继续。下一个最理想的方法是启动模拟器。
我们在 Jenkins 构建脚本中有一个步骤,它尝试使用如下命令从设备上卸载一些单元测试:
adb uninstall com.company.test
如果我们通常连接到构建机器的物理设备由于某种原因不存在或关闭,则构建将挂起:
waiting for device -
有谁知道如何解决这个问题?我听说过一些插件的传闻?理想情况下,我们希望它在一段时间后发出警告,然后继续。下一个最理想的方法是启动模拟器。
一个棘手的解决方法是检查“adb devices”命令是否返回“附加设备列表”字符串以外的任何内容。
在您的脚本中,尝试添加:
DEVICE_PRESENT=`adb devices | tail -n 1`
if [ -n "$DEVICE_PRESENT" ]
then
echo "A device is present..."
# Run your uninstall and other commands you need the device for here
fi
这个 hack 起作用的唯一原因是“adb devices”当前返回“连接的设备列表”和一个空行(如果没有找到设备)。如果这种行为发生变化,那么这种方法将不再有效。
这并不理想,但构建超时插件至少可以防止构建永远挂起:https ://wiki.jenkins-ci.org/display/JENKINS/Build-timeout+Plugin