jenkins+sonar+jacoco实现代码扫描UT覆盖率统计

简介: 网络上搜了一大堆文章,里面诸多错误,踩了很多坑,这里记录下防止下次踩坑。注:这里不介绍jenkin服务、sonar服务的搭建

前言:网络上搜了一大堆文章,里面诸多错误,踩了很多坑,这里记录下防止下次踩坑。


注:这里不介绍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即可

181a46ab43d848879b89636a00dbe5c4.png


三、jenkins安装sonar插件



这一步也和上面没有什么区别,同样搜索sonar插件,安装重启jenkins即可

f5634d7e806b474ea3a33f945791c63d.png


四、系统配置中配置sonar



sonar的配置如下,这里可以不添加登录账号,在job里面配置也是没有问题的,jacoco则不用配置,因为jacoco的数据是传到sonar上的


2af2b905f57d474793f39a536e3250bc.png


五、配置jenkins的job的-构建



1)新增一个构建,如下图:

e4fe07fdc9924e3383346cc776d25f38.png


2)配置如下图:


5c41a9b668c7436bbce3f88a8c967c37.png


上面的配置的具体信息如下:

#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)新增构建后操作,如下图:


3f796725268e4dcf8e7f5380ea8326fd.png


2)默认生成的配置如下,可以丝毫不用更改,直接使用就是可以的


a599d1c148d048bba3c636387c793b7c.png


这样就完全配置成功了,之后执行job就可以了。


3)查看UT覆盖率,如下图:


4a5b0dc292fb4e37b90492bdf2466ca3.png


这样就ok了


七、碰到的坑



1.maven项目中生成的test类位置不正确


如果目录下没有test目录,我们需要手动在src目录下创建一个test目录,再在test目录下创建一个java目录,不过若是测试java目录不是绿色的。则需要我们像下面这样操作下


1)找到这个按钮点进去

8dd2d26ba26b41e4a3ff77fe1e4ef881.png


2)照如下图操作即可


e3789407b2f1465db1ad997d57f5d326.png


此时再生成测试类,就会自动生成在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文件夹即可。


相关文章
|
6月前
|
jenkins Java Linux
Jenkins打包Gitlab代码发布到远程Linux服务器
Jenkins打包Gitlab代码发布到远程Linux服务器
103 0
|
8月前
|
监控 jenkins 持续交付
Python3,仅仅2段代码,就实现项目代码自动上传及部署,再也不需要Jenkins了。
Python3,仅仅2段代码,就实现项目代码自动上传及部署,再也不需要Jenkins了。
58 0
|
9月前
|
监控 NoSQL jenkins
2021-9-11大连东软实训---gitlab 、jenkins和sonar集成
2021-9-11大连东软实训---gitlab 、jenkins和sonar集成
66 0
|
10月前
|
jenkins 持续交付
Jenkins配置仅合并代码后触发流水线
Jenkins配置仅合并代码后触发流水线
165 0
|
11月前
|
jenkins 持续交付 Windows
【Jenkins】Jenkins拉取Github代码(windows)
【Jenkins】Jenkins拉取Github代码(windows)
204 0
【Jenkins】Jenkins拉取Github代码(windows)
|
11月前
|
jenkins Shell 持续交付
Jenkins pipeline 实战代码分享
Jenkins pipeline 实战代码分享
|
12月前
|
Java jenkins 持续交付
pytest自动化框架集成jenkins+gitee+allure,使用git下拉代码和本地代码实现,基于windows
pytest自动化框架集成jenkins+gitee+allure,使用git下拉代码和本地代码实现,基于windows
|
12月前
|
jenkins 持续交付 数据安全/隐私保护
jenkins配置第三方插件 gitee并且构建 python代码
jenkins配置第三方插件 gitee并且构建 python代码
|
12月前
|
XML 数据可视化 jenkins
干货!Jenkins下配置findbugs、pmd及checkstyle实现代码自动检测
干货!Jenkins下配置findbugs、pmd及checkstyle实现代码自动检测
265 0
|
jenkins 应用服务中间件 Linux
509/1000:在jenkins中拉取git仓库代码的踩坑
509/1000:在jenkins中拉取git仓库代码的踩坑
197 0