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文件夹即可。


相关文章
|
11天前
|
jenkins Java 持续交付
Gitee+Jenkins+SonarQube代码上线的实战操作
通过以上步骤,就可以实现基于Gitee、Jenkins和SonarQube的代码上线流程,确保代码的质量和上线过程的自动化和可控性。在实际操作中,可以根据项目的具体需求和环境进行适当的调整和优化。
|
17天前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
48 3
|
1月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
【10月更文挑战第8天】本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
35 5
|
1月前
|
jenkins 持续交付 开发工具
【10月更文挑战第1天】通过jenkins选择tag完成代码上线
【10月更文挑战第1天】通过jenkins选择tag完成代码上线
|
3月前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
【8月更文挑战第30天】在Jenkins服务器中,git和Gitee是常用的代码拉取终端。Git作为分布式版本控制系统,具备出色的灵活性和可扩展性;而Gitee则在国内网络环境下表现更佳,适合团队协作。Git配置包括安装、设置用户信息及生成SSH密钥等步骤;Gitee配置也类似,需注册账号、创建仓库、配置基本信息并设置远程仓库地址。开发人员提交代码后,可通过Webhook、定时轮询或事件监听等方式触发Jenkins动作,确保持续集成和部署高效运行。正确配置这些触发机制并通过测试验证其有效性至关重要。
66 2
|
3月前
|
jenkins Java 持续交付
【一键搞定!】Jenkins 自动发布 Java 代码的神奇之旅 —— 从零到英雄的持续集成/部署实战秘籍!
【8月更文挑战第9天】随着软件开发自动化的发展,持续集成(CI)与持续部署(CD)已成为现代流程的核心。Jenkins 作为一款灵活且功能丰富的开源 CI/CD 工具,在业界应用广泛。以一家电商公司的 Java 后端服务为例,通过搭建 Jenkins 自动化发布流程,包括创建 Jenkins 项目、配置 Git 仓库、设置构建触发器以及编写构建脚本等步骤,可以实现代码的快速可靠部署。
136 2
|
2月前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
安装Git、配置用户信息、生成SSH密钥以及在Gitee上创建项目仓库等。
77 0
|
3月前
|
jenkins Java Shell
jenkins学习笔记之十三:配置SonarScanner扫描Java项目
jenkins学习笔记之十三:配置SonarScanner扫描Java项目
|
18天前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
40 2
|
3月前
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。