我在詹金斯一份工作,运行用硒UI测试。 这项工作可以同时运行它的多个实例。 我遇到了一个问题,而试图使用的Xvfb(中的Xvfb插件或其他方式)。
使用插件的Xvfb
该配置是如下。 该插件分配相同的显示端口2个并发作业实例,然后一个失败。
从日志的Xvfb(注displayfd是2和屏幕是在两种情况下0):
Xvfb starting$ /usr/bin/Xvfb -displayfd 2 -screen 0 1024x758x16 -fbdir /srv/jenkins/xvfb-86-2156913754362856583.fbdir
Xvfb starting$ /usr/bin/Xvfb -displayfd 2 -screen 0 1024x758x16 -fbdir /srv/jenkins/xvfb-87-5845090375656014678.fbdir
其中上述2个作业实例失败。 失败的消息是这样的:
02:11:51 _XSERVTransSocketINETCreateListener: ...SocketCreateListener() failed
02:11:51 _XSERVTransMakeAllCOTSServerListeners: server already running
要怎样才能修复这个错误,这样的并发实例没有任何问题,运行?
此外,我想知道的Xvfb插件如何做的显示器来运行浏览器实例协会(火狐在这种情况下)。 它做export DISPLAY=:xx
内部,其中XX =显示端口由插件作为计算的?
命令行(不通过Xvfb插件)
我尝试第二种方法是不使用插件,直接使用CLI运行的Xvfb。 我用了詹金斯环境变量BUILD_NUMBER确保独特的显示关联的作业实例。
export DISPLAY=:${BUILD_NUMBER}
Xvfb :${BUILD_NUMBER} -screen 0 1024x768x24 &
xvfb的启动罚款在两个作业实例,但测试失败,与此有关。
Failed to connect to binary FirefoxBinary(/usr/local/bin/firefox) on port 7055; process output follows:
Error: cannot open display: 0:0
它出现的测试仍在试图用显示0:0。
任何有助于解决这个问题是极大的赞赏。