使用 Jenkins 构建应用程序、使用 Jacoco 代码覆盖率运行测试、进行 SonarQube 分析并将所有结果在线保存到 SonarQube 是部署应用程序的好方法。
在本文中,您将能够将 Jenkins 与 Maven 结合使用并管理以下任务:
-
构建应用
-
使用 Jacoco 测试覆盖率报告运行测试
-
运行 SonarQube 分析
-
将测试结果、测试覆盖率报告和SonarQube分析报告推送到SonarQube Server。
其他常见任务,如从版本控制系统中提取源代码或将 war 部署到应用程序服务器,不在本文的讨论范围之内。
詹金斯
Jenkins 是一个屡获殊荣的跨平台持续集成和持续交付应用程序。使用 Jenkins 持续构建和测试您的软件项目 ,使开发人员更容易将更改集成到项目中,并使用户更容易获得全新构建。它还允许您通过提供强大的方法来定义您的构建管道并与大量测试和部署技术集成, 从而持续交付 您的软件。
首先你需要一个 Jenkins 实例。如果你已经有一个,你可以使用它。您可以从 https://jenkins-ci.org/ 下载最新版本
Jenkins 声纳插件
使用更新中心(不是 Sonargraph)安装 Jenkins“SonarQube 插件”。插件网址:
https://wiki.jenkins-ci.org/display/JENKINS/SonarQube+plugin
声纳管
SonarQube 是一个管理代码质量的开放平台。因此,它涵盖了 7 个轴:重复代码、编码标准、单元测试、复杂代码、潜在错误、评论、设计和架构
如果您没有 SonarQube 实例,则需要从 http://www.sonarqube.org/ 安装一个。
Jenkins 中的 SonarQube 服务器配置
要添加新的 SonarQube 服务器,请遵循“管理 Jenkins -> 配置系统”并找到“添加声纳”选项。在 Advanced 链接下填写服务器属性:
Name: MySonarServer
Server URL: http://10.210.99.88:9000
Sonar account login: sonar
Sonar account password: myPass
Database URL: jdbc:mysql://10.210.99.88:3306/sonar?useUnicode=true&characterEncoding=utf8
Database login: sonar
Database password: myDbPass
Database driver: com.mysql.jdbc.Driver
构建脚本的覆盖选项
添加“verify -Prun-its,coverage”maven 构建选项以捕获测试覆盖率报告。例子:
失败的测试行为
Maven 有一个参数可以在测试失败后停止或继续。在理想情况下,如果测试失败,最好停止构建。在 Jenkins 中,您可以使用“Build-> Advanced-> MAVEN_OPTS”设置此选项并附加以下参数。
Name: MySonarServer
Server URL: http://10.210.99.88:9000
Sonar account login: sonar
Sonar account password: myPass
Database URL: jdbc:mysql://10.210.99.88:3306/sonar?useUnicode=true&characterEncoding=utf8
Database login: sonar
Database password: myDbPass
Database driver: com.mysql.jdbc.Driver
将 SonarQube 添加到 Jenkins 后期构建
您可以使用“添加构建后操作”选项将声纳分析添加到 Jenkins。这是一个列表,因此如果有多个 Sonar 安装,请选择您添加的那个。
POM更新
在 <properties> 标签内添加 SonarQube 项目属性。如果你没有设置任何属性,SonarQube 将使用默认值。
Name: MySonarServer
Server URL: http://10.210.99.88:9000
Sonar account login: sonar
Sonar account password: myPass
Database URL: jdbc:mysql://10.210.99.88:3306/sonar?useUnicode=true&characterEncoding=utf8
Database login: sonar
Database password: myDbPass
Database driver: com.mysql.jdbc.Driver
对于 Jacoco 代码覆盖,将以下代码添加到 profiles 标签
Name: MySonarServer
Server URL: http://10.210.99.88:9000
Sonar account login: sonar
Sonar account password: myPass
Database URL: jdbc:mysql://10.210.99.88:3306/sonar?useUnicode=true&characterEncoding=utf8
Database login: sonar
Database password: myDbPass
Database driver: com.mysql.jdbc.Driver
完成所有这些步骤后,您将能够为每个部署运行 SonarQube 分析。此外,您将在 SonarQube 项目页面中看到测试报告和测试代码覆盖率。
可以看到结果截图:
詹金斯单元测试报告
测试和覆盖总结
单元测试报告
单元测试覆盖率报告