Xvfb显示到多个并发Jenkins作业的唯一分配

时间:2016-08-17 21:39:05

标签: jenkins parallel-processing jenkins-plugins xvfb jenkins-build-flow

我在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

Xvfb配置如下: Xvfb configuration in test running job

我遇到了很多端口冲突和问题,它会抛出错误:

_XSERVTransSocketINETCreateListener: ...SocketCreateListener() failed
20:51:06 _XSERVTransMakeAllCOTSServerListeners: server already running

有人能告诉我如何配置Xvfb,以便每个正在运行的作业实例占用一个独特的显示/屏幕。

为了简化和总结,我说有一个简单的Jenkins作业,它使用Xvfb显示端口来运行。并且,作业可以同时作为多个实例运行。如何确保每个并发实例在一个独特的Xvfb显示器上运行?

1 个答案:

答案 0 :(得分:0)

派对有点晚了,但在设置我的Jenkins Xvfb工作时遇到了这个问题。我的解决方案是添加运行时标志

xvfb-run -a

这将继续尝试显示端口,直到找到一个免费的端口。您可以阅读更多here。因此,请尝试在Xvfb additional options插件字段中添加标记。