https://www.eclemma.org/jacoco/trunk/doc/index.html
如:
[“/bin/sh”,”-c”,”mkdir /project/jacoco && cd /project/jacoco && wget http://search.maven.org/remotecontent?filepath=org/jacoco/jacoco/0.8.5/jacoco-0.8.5.zip -O ./jacoco-0.8.5.zip && unzip jacoco-0.8.5.zip && java -javaagent:/project/jacoco/lib/jacocoagent.jar=dumponexit=true,includes=com.*,output=tcpserver,port=6300,address=0.0.0.0 -jar -Dspring.profiles.active=test /project/start.jar”]
如:/var/lib/jenkins/workspace/build.xml
<!-- reset="true"是指在 dump 完成之后,重置 jvm 中的覆盖率数据为空。append="true"是指 dump 出来的 exec 文件为增量方式 -->
-- 创建自由风格任务
-- 拉取服务的代码
-- 配置 mvn 命令进行编译生成 class 文件
-- 配置 ant 命令进行 dump 拉取覆盖率信息
-- 配置 jacoco report 信息
以上配置完成后,执行任务,可得到覆盖率报告,如:
但,仍存在问题:被测服务部署的版本与 jenkins 拉取的版本不一致时,会导致覆盖率报告信息不准确
解决方案:为 jenkins 安装 Dynamic Parameter 插件,动态获取测服务的分支及 commitid,作为变量传递给 jenkins,从而确保两边保持一致
参考:https://blog.csdn.net/A_man_only/article/details/95320389
https://www.jianshu.com/p/dd1b0f5c6a01
Step1:在项目的 pom 文件中加入插件:
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
</plugin>
验证:重新部署服务后,通过访问<项目的访问 url>/actuator/info 得到返回结果,内含分支信息及提交版本号信息,如:
{"git":{"commit":{"time":"2020-07-02T09:11:58Z","id":"bdcae43"},"branch":"master"}}
Step2:Jenkins 任务中配置动态变量,获取提交版本号 commitId
def response= "curl http://[host]/promotion/actuator/info".execute()
response.waitFor()
def respStr = response.text
def firstIndex = respStr.lastIndexOf("id")+5
def lastIndex = respStr.lastIndexOf("branch")-4
def id=respStr.substring(firstIndex, lastIndex)
Step3:Jenkins 任务中,配置使用 commitId 获取源码