美文网首页
docker环境下的代码覆盖率统计

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

作者: Lacia | 来源:发表于2018-01-16 17:59 被阅读0次

    项目后期使用了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相关的东西吧,但愿自己执行力上得来唔…

    相关文章

      网友评论

          本文标题:docker环境下的代码覆盖率统计

          本文链接:https://www.haomeiwen.com/subject/wrheoxtx.html