20191106-hudson.AbortException: Test reports were found but none of them are new. Did leafNodes run?

本文探讨了在Jenkins上使用Maven进行测试时遇到的常见错误,分析了测试未运行的原因,包括配置问题、依赖冲突及环境变量设置等。提供了解决方案,如检查surefire插件配置、更新组件版本和正确设置JDK。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

hudson.AbortException: Test reports were found but none of them are new. Did leafNodes run? 
For example, xxx.xml is 1 min 45 sec old

如果你在Jenkins上使用maven跑测试,出现这个错误.很显然,Jenkins明确问你,是测试没有跑起来?
现在很肯定,一定是测试没有跑起来!

maven的surefire插件也会输出说跑了0个测试,此时就弄不清你哪里出了问题(jenkins?maven?surefire?)。
首先是没明白这个处理过程,按照常规思路,是跑完测试后,Jenkins的插件才会去处理surefire的测试报告,可不看源码不会相信,估摸着“它可能检测下旧的测试报告时间戳”。这应该不可能,但因为菜啊,拿不准啊,刚开始不敢这么说啊!

实际上的确是跑完测试Jenkins才会去拿测试结果,看Junit插件的完整源码就好了。
出现这个的原因就是maven没有跑起测试,Jenkins的Junit插件处理surefire的测试报告时报错,将任务标记为 failure.

测试没有跑起来的原因包括但不限于:

  • pom里同时依赖了testNG和Junit,maven把Junit测试代码用testNG跑了
  • 你使用Junit5 ? 看这里
  • surefire没有从你输入的测试类中解析出测试用例,比如说使用了错误的语法
  • 我们的就比较奇怪了,使用surefire2.18.1配合 -Dtest=xxxTest#testA+testB 再加并行化等级配置classes稳定复现

首先我早已看到surefire文档说2.19.2版本后测试类间才支持+这个语法,但是不知道前人的脚本里为何在2.18.1版本就使用了这个语法,在并行化之前也没有错,并行化后才出错了,这倒要看看surefire 的源码了,同时我之前就好奇,surefire是怎样处理TestSuite并把它并行化,那里也是有些bug的,会产生死锁。

问题暂时得到解决,再也看不见烦人的xxx.XML is 1 min 45 sec old
总结有下:
1.看surefire源码,查看根本原因;
2.系统中组件(大到一整个软件、小到第三方依赖)更新时,必先了解,询问其他模块、系统是否涉及此组件,考虑到影响。避免不必要的麻烦

2019.11.24

Jenkins 工具位置和环境变量问题,导致从节点JDK的问题
长话短说,要想任务中配置JDK,Jenkins系统工具级至少配置2个JDK;如果只配置了一个JDK那么maven任务的运行和挂载从节点的动作都使用这个系统级JDK(在节点配置的JDK工具目录是没有作用的).
参考这篇文章:https://support.cloudbees.com/hc/en-us/articles/204960114-How-to-set-the-available-JDK-versions-
想明白:挂载从节点(slave.jar)使用的JDK无关运行maven任务的JDK(当你配置的是一个maven job的时候)。挂载从节点是一个动作,运行某个程序是另一个动作,(比如使用Java启动并做拦截信息主机上的maven[agent.jar,maven-interceptor])它们之间使用的软件没有依赖关系。

2019.12.21

补充:首先要保证slave.jar运行起来;之前应该是以java7挂载节点然后运行java8的构建代码;它可以帮助你安装java8,但是我现在怎么不能复现了?
JDK工具是工具,JAVA_HOME环境变量是环境变量,在Jenkins层面二者毫无关系,在slave上肯定相关啦

如果系统级工具配置勾选了自动安装,它就会把这个工具,比如JDK拷贝到从节点同样的位置(用户uucp 143),当然这个目的位置也可以在从节点配置那里修改
因为Jenkins登录从节点无关shell,所以在profile还是在bashrc中配置的JAVA_HOME或者是PATH的修改都不会生效的,所以如果依赖某个环境变量可以在从节点配置任务配置处预置配置,同时可以多看每个输入框后面的问号,即帮助文档(比如环境变量那里可以使用过PATH+XXX)。

以上论证有如有错误还请指正。

现在才发现,工具配置自动安装这个功能可以很方便在集群里分发工具、代码呀!Jenkins-X?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值