我正在尝试使用Jenkins作为docker集装箱。 为此,我使用官方docker图像 。 因为我们有一些基于Selenium(Vaadin Workbench)的集成testing,所以我需要运行phantomjs。 与docker化之前一样,testing正确执行。 我的Web应用程序(服务器)正确执行,phantomjs稍后作为客户端启动,并正确执行所有testing。 这是预期的行为。
现在我喜欢在高山体系中使用jenkins的想法。 一般来说,由于体积小,我在其他docker集装箱中使用阿尔派。 jenkinsdocker官方形象也有一个阿尔卑斯山的形象,我可以使用它。 一般来说,我没有问题,我需要安装其他工具(ansible,…)。 而且他们在阿尔卑斯山版本中效果很好。 但是我正面临一个幻影问题。
首先,我从github项目安装phantomjs,这个项目有一个高山编辑。 这里有我使用的命令:
RUN apk --no-cache add fontconfig && \ mkdir -p /usr/share && \ curl -L https://github.com/Overbryd/docker-phantomjs-alpine/releases/download/2.11/phantomjs-alpine-x86_64.tar.bz2 | tar xj --directory /usr/share && \ chmod +x /usr/share/phantomjs/phantomjs && \ ln -s /usr/share/phantomjs/phantomjs /usr/bin/phantomjs
看来工作正常。 如果我使用docker exec -it jenkins sh来访问docker exec -it jenkins sh容器,我可以从命令行执行phantomjs。 但是,当jenkins执行testing,我有这个错误:
WebDriverException: Timed out waiting for driver server to start
在任何testing开始之前。 应用程序服务器正在运行(我可以从我的浏览器连接到它),但jenkins无法启动phantomjs来连接它。 我已经检查了phantomjs日志 ,看看这是否是问题,但它有权限写入(仍然是,文件是空的)。 我仍然可以从命令行执行phantomjs,但jenkins + selenium不能。
当然,在高山机器上运行jenkins不是强制性的,现在我回到基于openjdk的标准docker镜像。 但现在我对这个问题感到好奇,我不确定这是一个幻想问题还是一个高山问题。 或者,也许我需要一些额外的configuration或数据包在阿尔卑斯山运行phantomjs。
使用jenkins + alpine + selenium(或同等产品)时,是否有同样的问题? 任何可能导致此错误的线索?