1 - 简介

可以在一个Jenkins的全局系统配置中设置多个SonarQube服务器。
在每个具体的任务中,可以指定特定的SonarQube服务器来完成代码扫描。

2 - 配置

默认已安装并启动Jenkins与SonarQube。

2.1 安装SonarQube Scanner插件

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_Server

2.2 配置 SonarQube Server 信息

Jenkins---》系统管理----》系统设置,配置 SonarQube Server 信息

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_Server_02

在SonarQube上生成令牌

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_Jenkins_03

将令牌添加到Jenkins

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_Jenkins_04

选择应用令牌

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_单元测试_05

2.3 配置 SonarQube Scanner

Jenkins---》系统管理---》全局工具配置, 配置 SonarQube Scanner

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_单元测试_06

2.4 Jenkins任务配置

设置源码仓库

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_单元测试_07

指定构建前的操作

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_Server_08

sonar.projectKey=testsonar
sonar.sources=.
  • Path to project properties:指定sonar-project.properties 文件,默认使用项目根目录的sonar-project.properties文件
  • Analysis properties:传递给 SonarQube的配置参数,优先级高于 sonar-project.properties 文件的参数
  • Additional arguments:附加的参数,例如-X表示启用Debug 模式输出更多的日志信息

指定构建参数

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_单元测试_09

clean package sonar:sonar -Dsonar.host.url=http://192.168.16.200:9000

3 - 执行构建

3.1 查看扫描报告

控制台输出

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_Jenkins_10

在任务界面会出现多个Sonar的链接

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_单元测试_11

点击Sonar链接 即可看到扫描报告

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_Jenkins_12

3.2 直接在SonarQube Server上查看

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_Jenkins_13

4 - 覆盖率扫描

需要借助JaCoCo插件,才能获取到代码的真实单元测试覆盖率,否则在有单元测试的情况下也只会显示为0%。

单击“覆盖率”可看到详细的代码统计展示。

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_Server_14

安装JaCoCo插件

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_单元测试_15

通过指定构建的Goals and options参数

clean package org.jacoco:jacoco-maven-plugin:prepare-agent sonar:sonar -Dsonar.host.url=http://192.168.16.200:9000

jenkinsfile调用sonar 扫描检查python jenkins sonarqube_Jenkins_16

注意:添加如下参数-Dmaven.test.failure.ignore=false可以忽略失败的单元测试,以便完成对覆盖率的统计。

5 - 多分支扫描

在SonarQube社区版本中,可以通过配置构建的Goals and options参数,来简单地进行不同分支的扫描。
只需要增加参数-Dsonar.branch=<branch name> 针对同一项目的不同分支进行构建后,在Sonar界面,会看到根据“”的扫描任务和状态。


行动是绝望的解药!

欢迎转载和引用,但请在明显处保留原文链接和原作者信息!
本博客内容多为个人工作与学习的记录,少数内容来自于网络并略有修改,已尽力标明原文链接和转载说明。如有冒犯,即刻删除!

以所舍,求所得,有所获,方所成。