前言:网络上搜了一大堆文章,里面诸多错误,踩了很多坑,这里记录下防止下次踩坑。
注:这里不介绍jenkin服务、sonar服务的搭建
一、pom.xml文件引入jacoco插件
废话不多说直接上代码
<build> <plugins> <plugin> <!--maven的插件--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <!--Maven执行UT的插件--> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> <configuration> <useSystemClassLoader>false</useSystemClassLoader> <skipTests>false</skipTests> </configuration> </plugin> <plugin> <!--jacoco插件--> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.5</version> <configuration> <!--跳过test:false--> <skip>false</skip> <!--声明生成jacoco测试报告的位置,默认也是target,建议还是配置这个路径--> <destFile>${basedir}/target/jacoco.exec</destFile> </configuration> <executions> <execution> <id>prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <configuration> <dataFile>${basedir}/target/jacoco.exec</dataFile> <outputDirectory>${basedir}/target</outputDirectory> </configuration> <id>report</id> <phase>test</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
二、jenkins安装jacoco插件
这个很简单,找到jenkins的插件管理里,输入jacoco然后安装重启jenkins即可
三、jenkins安装sonar插件
这一步也和上面没有什么区别,同样搜索sonar插件,安装重启jenkins即可
四、系统配置中配置sonar
sonar的配置如下,这里可以不添加登录账号,在job里面配置也是没有问题的,jacoco则不用配置,因为jacoco的数据是传到sonar上的
五、配置jenkins的job的-构建
1)新增一个构建,如下图:
2)配置如下图:
上面的配置的具体信息如下:
#sonar-scanner.bat -D" # 随便取名,这里取什么名称在sonar里就展示什么 sonar.projectKey=auth-server-sonarqube sonar.sources=/var/jenkins_home/workspace/auth-server-PRD/src/ sonar.host.url=http://172.17.32.73:9000 sonar.login=186926b020d8a7ce41524799d964a61057a21e97 sonar.java.binaries=./ sonar.sourceEncoding=UTF-8 #代码覆盖率扫描目录 sonar.core.codeCoveragePlugin=jacoco # 这里的路径是寻找jacoco.exec的路径,这个路径就是pom.xml中配置的路径 sonar.jacoco.reportPaths=/var/jenkins_home/workspace/auth-server-PRD/target/jacoco.exec
六、配置jenkins的job的-构建后操作
1)新增构建后操作,如下图:
2)默认生成的配置如下,可以丝毫不用更改,直接使用就是可以的
这样就完全配置成功了,之后执行job就可以了。
3)查看UT覆盖率,如下图:
这样就ok了
七、碰到的坑
1.maven项目中生成的test类位置不正确
如果目录下没有test目录,我们需要手动在src目录下创建一个test目录,再在test目录下创建一个java目录,不过若是测试java目录不是绿色的。则需要我们像下面这样操作下
1)找到这个按钮点进去
2)照如下图操作即可
此时再生成测试类,就会自动生成在test对应的文件夹下面了。
2.找不到jacoco.exec文件-场景一
若是maven项目里没有test目录就会出现这种情况,所以执行jacoco手机UT覆盖率时需要我们先建立test目录,且需要test下面的java目录是绿色的才可以。
3.找不到jacoco.exec文件-场景二
还有一种可能就是jacoco配置的路径不正确,在jenkins的构建这个步骤中会配置寻找jacoco.exec文件的目录,这个目录是插件中配置的,需要确保两个目录完全一致,不一致也是找不到jacoco.exec文件的
4.执行test命令报错:node -v …
若是没有test目录就会报一个错误,node -v。。。,看到这个错误就建立一个正确的test文件夹即可。