我的Jenkins环境是一个Master+一个slave,Job的执行主要由slave来进行。Master只负责调度。

slave上安装有JDK7、JDK8。slave agent用的是java web start 启动 jnlp 的方式运行起来的。

这次遇到的问题是:有几个maven job在运行到arquilian test这一步的时候,slave上需要启动JBoss AS 7.2.0.Final服务器来跑arquilian test包,但是一直启动不起来,JBoss也不报错。最后Arquilian test会因为任务超时而宣告失败。

经过一列的排查之后,我发现导致问题的原因是JBoss与JDK不兼容。JBoss AS 7.2.0.Final只能与JDK7一起运行,不能用JDK8。如果用了JDK8,那么JBoss在启动到一半时,就会卡在那里,什么提示都没有。Arquilian test的arquilian.xml配置文件中可以显式指定JBoss容器使用什么版本的JDK。但是,由于项目组成员每个人的JDK7安装目录不尽相同,所以我们把JDK path设置从arquilian.xml文件中移除了。这时问题就来了,从arquilian.xml文件中移除了JDK相关设置之后,在slave机器上启动slave-agent.jnlp时如果用的是JDK8的runtime,那么在slave-agent执行arquilian test步骤时,就会默认使用JDK8的runtime来启动JBoss AS 7.2.0.Final。这样一来,就会导致JBoss AS 7.2.0.Final启动失败。

鉴于arquilian.xml文件中不能强制指定使用JDK7,所以在slave机器上,我们只要使用JDK7 runtime来启动slave-agent.jnlp就可以了。

posted on 2017-08-25 14:58  Rick Qin  阅读(262)  评论(0编辑  收藏  举报