当您尝试关闭它时,Appium服务器有时无法停止,服务器和端口仍然永远挂起,并且Appium CLI没有内置命令来停止服务器,这使得以编程方式进行管理变得更加困难
想象一下,您希望通过CI / CD管道中的自动化过程以编程方式管理它 像詹金斯(Jenkins)这样的故事,可能是一个非常痛苦的故事
appium
or
appium & (as background process)
启动Appium服务器的命令,只有在终止它时它才能停止,但有时不能停止
当您尝试关闭它时,Appium服务器有时无法停止,服务器和端口仍然永远挂起,并且Appium CLI没有内置命令来停止服务器,这使得以编程方式进行管理变得更加困难
想象一下,您希望通过CI / CD管道中的自动化过程以编程方式管理它 像詹金斯(Jenkins)这样的故事,可能是一个非常痛苦的故事
appium
or
appium & (as background process)
启动Appium服务器的命令,只有在终止它时它才能停止,但有时不能停止
我已经在StackOverflow上搜索答案很长时间了,但没有一个直接回答我的问题
到目前为止,看来可行的方法是您必须在具有特定进程ID的Shell中手动终止服务器的进程
要使其简单地与管道一起使用,我们可以使用命令的简短版本
kill $(lsof -t -i :4723)
kill \$(lsof -t -i :${APPIUM_PORT}) [In Jenkinsfile]
APPIUM_PORT 是您的Appium端口,默认端口是 4723
lsof 命令应在类似Unix的系统中运行,例如MacOS,Linux
lsof是一个命令,表示“列出打开的文件”,该命令在许多情况下都使用 类似于Unix的系统,用于报告所有打开文件和进程的列表 打开了他们
通过运行此命令,它应该返回在该特定端口上运行的进程的ID,以用于终止信号
在管道中实施 在您的Jenkinsfile的末尾添加此步骤
post{
always{
...
echo "Stop appium server"
sh "kill \$(lsof -t -i :${APPIUM_PORT})"
}
success{
...
}
failure{
...
}
cleanup{
...
}
}
它将杀死挂起的Appium服务器进程,您可以使用相同的端口再次启动新的Appium服务器!
要查看更多详细信息,我已经在此处发布了博客
How to start/stop Appium server in Jenkins Pipeline
希望有帮助