docker环境下的代码覆盖率统计

2018-01-16  本文已影响0人  Lacia

项目后期使用了docker部署,于是尝试了一下在docker环境部署实现代码覆盖率的统计。

一点尝试

参考之前使用jacoco的方法,进入一个已开启的镜像,将jacoco放入镜像中,在镜像内修改启动脚本,配置jacoco路径、dumpdir等项目。

mark

其中关于address项,一开始将address设置为127.0.0.1,重启程序时报错,经过几次错误实验后修改为容器ip,即在镜像内通过ifconfig得到的ip。但是如果每次都进入镜像去查看ip的话未免太麻烦,在kube主机上通过kubectl get po -o wide命令可见所有容器的信息,其中就有容器的ip。

mark

重启程序后ps -ef | grep java,可见jacoco已启动监听。

两点尝试

将jacoco放入基础镜像中,将新的镜像submit并push到镜像库中。使用新的基础镜像制作新的镜像。

启动新的镜像:

docker run -d -p 31000:6300 name bash

修改ant中的build.xml文件,其中端口设置为容器外部端口31000

mark

在ant的bin目录执行ant dump,在basedir下可以找到生成的exec文件。

<project name="testCodeCoveage"  basedir="/home/jxsw/apache-ant-1.10.1/bin/report" xmlns:jacoco="antlib:org.jacoco.ant" xmlns:sonar="antlib:org.sonar.ant" default="all">

三点尝试

已有的classpath配置:

 <property name="revenueClasspath" value="/home/jxsw/apache-ant-1.10.1/bin/report/class/test" />

将已配置在启动文件中的dump class拷贝出来:

docker cp id:/home/classes/ /home/jxsw/apache-ant-1.10.1/bin/report/class/test/

如果需要拷贝cp后路径下的文件夹,路径最后要加"/"。

拷贝后执行ant report,就可以在指定路径下得到report文件啦。

Note

在整个过程中遇到了几个坑:

1、启动文件中的ip问题,一开始写成了容器所在node机器的ip,后来写成了127.0.0.1,最后以尝试一次的想法终于写对了。关键在于没有对jacoco的原理理解透彻,还是需要对原理深入理解。https://testerhome.com/topics/5757

2、docker submit之后在harbor中没有找到镜像,因为没有push…

又一个愚蠢的错误,记录在这里提醒自己。

3、docker和kube的相关知识还是需要补充一下的嗯。

之后大概会更新一些java相关的东西吧,但愿自己执行力上得来唔…

上一篇下一篇

猜你喜欢

热点阅读