期盼死亡的小丑 发表于 2018-1-7 13:12:57

jenkins+jacoco配置代码覆盖率

一、服务器端配置
  1、在代码部署服务器中安装jacoco,用于手工/接口测试覆盖率监听收集
  
https://images2015.cnblogs.com/blog/936688/201701/936688-20170123171453659-8621151.png
  2a、正常情况下,可在服务器中代码部署模块下的default文件夹中,修改tomcat文件如下
  
https://images2015.cnblogs.com/blog/936688/201701/936688-20170123171735050-1598756504.png
  
其中,includes后为代码包路径;port为jacoco的监听端口,用于监听slave发来的dump请求;address为该代码模块的IP;
  2b、像我们公司集成了部署工具,则需要直接在集成工具中添加jvm参数,否则在项目重新部署后tomcat文件会被覆盖
  
https://images2015.cnblogs.com/blog/936688/201701/936688-20170123172118409-1533921464.png

二、jenkins机器配置
  1、在jenkins上创建jacoco的job,添加代码下载路径及slave机器地址;
  
https://images2015.cnblogs.com/blog/936688/201701/936688-20170123182429034-221220172.png
  2、运行一次job,将代码下载至slave机器,在代码所在根目录配置build.xml
  
3、在jenkins的job上添加
  
https://images2015.cnblogs.com/blog/936688/201701/936688-20170123182623034-1729687027.png

三、坑
  1、项目的代码量大概在5G左右,jenkins下载时默认超时时间为10分钟,超时报错timeout,需在job中源码管理模块下重新设置超时时间
  
https://images2015.cnblogs.com/blog/936688/201701/936688-20170123182945659-591059399.png
  2、由于我跑测试用例在测试环境,一开始拉代码时拉的是master分支(对应线上环境)导致覆盖率始终不匹配,后改为dev分支。
  
3、不知公司的部署平台是怎么编译的,一开始在jenkins直接用mvn install编译结果不匹配,于是试着将服务器端已经编译的代码直接拷贝过来后得到覆盖率结果,因此放弃了jenkins的编译,采用直接拷贝服务器上编译的classes的方法:
  
此时可在服务器上项目部署所在的webroot上层文件中执行python起一个http进程:
  

nohup python -m SimpleHTTPServer 12306 &  

  在slave机器上用wget方式获取classes:
  
https://images2015.cnblogs.com/blog/936688/201701/936688-20170124103851566-510782793.png
页: [1]
查看完整版本: jenkins+jacoco配置代码覆盖率