我在Jenkins中有一个可以执行并发构建的构建流程作业。单个运行的作业实例中的每个构建都可以运行多个UI测试,其中每个测试集应该在唯一的Xvfb端口上运行。我正在使用Xvfb插件。
概念上这个:
Job1 and Job2 are 2 concurrent instance of a Build Flow job. There could be more.
Each of Job1 and Job2 can have concurrent running children,
each of which is a Free Flow job that configures the Xvfb in it.
Job1 -------------| -Test set 1 (test_a, test_b etc. on Xvfb port 1) -> free flow instance 1@Job1
|
| -Test Set 2 (test_x, test_y etc. on Xvfb port 2) -> free flow instance 2@Job1
|
| -Test Set 3 (test_p, test_q etc. on Xvfb port 3) -> free flow instance 3@Job1
|
| -Test Set 4 (test_m, test_n etc. on Xvfb port 4) -> free flow instance 4@Job1
Job2 -------------| -Test set 1 (test_s, test_t etc. on Xvfb port 5) -> free flow instance 1@Job2
|
| -Test Set 2 (test_d, test_e etc. on Xvfb port 6) -> free flow instance 2@Job2
|
| -Test Set 3 (test_j, test_k etc. on Xvfb port 7) -> free flow instance 3@Job2
我遇到了很多端口冲突和问题,它会抛出错误:
_XSERVTransSocketINETCreateListener: ...SocketCreateListener() failed
20:51:06 _XSERVTransMakeAllCOTSServerListeners: server already running
有人能告诉我如何配置Xvfb,以便每个正在运行的作业实例占用一个独特的显示/屏幕。
为了简化和总结,我说有一个简单的Jenkins作业,它使用Xvfb显示端口来运行。并且,作业可以同时作为多个实例运行。如何确保每个并发实例在一个独特的Xvfb显示器上运行?
答案 0 :(得分:0)
派对有点晚了,但在设置我的Jenkins Xvfb工作时遇到了这个问题。我的解决方案是添加运行时标志
xvfb-run -a
这将继续尝试显示端口,直到找到一个免费的端口。您可以阅读更多here。因此,请尝试在Xvfb additional options
插件字段中添加标记。