一、前言
1、本文主要内容
- Jenkins集成SonarQube Server配置
- Jenkins集成SonarQube Scanner配置
- Jenkins+Maven+SonarQube扫描Java项目代码质量
- Jenkins集成SonarQube Scanner参数说明
2、环境信息
- 服务器
服务器名 | 操作系统 | IP | 说明 |
---|---|---|---|
Jenkins | CentOS 7 | 192.168.88.44 | 部署Jenkins |
Sonar | CentOS 7 | 192.168.88.45 | 部署Sonar |
- 软件
工具/环境 | 版本 |
---|---|
Jenkins | 2.176.2 |
Maven | 3.6.1 |
SonarQube Server | 7.5 |
SonarQube Scanner | 2.8 |
JDK | 1.8.0_181 |
3、准备工作
- Jenkins部署
参考:https://ken.io/note/centos7-jenkins-install-tutorial
部署在服务器192.168.88.44
,访问地址为:http://192.168.88.44:8080
- SonarQube部署
参考:https://ken.io/note/sonarqube-install-and-code-scan-tutorial
部署在服务器192.168.88.45
,访问地址为:http://192.168.88.45:9000
二、Jenkins集成SonarQube配置
1、安装插件
菜单:管理Jenkins->插件管理,安装以下插件:
- 插件列表
插件名 | 版本 | 说明 |
---|---|---|
SonarQube Scanner | 2.9 | 集成SonarQube进行代码扫描/检查 |
2、生成SonarQube Token
SonarQube菜单:My Account -> Security 或者访问:http://192.168.88.45:9000/account/security/
生成之后记得复制并保存Token,不然页面刷新或者关闭后就无法查询到Token了。
ac28526ece72a4f10104059049d3e6e0347da9f7
3、添加Jenkins凭据
菜单:凭据 —> 系统 -> 全局凭据 -> 添加凭据,或者直接访问:http://192.168.88.44:8080/credentials/store/system/domain/_/newCredentials
添加凭据
类型选择:Secret text
,然后Secret中填入之前生成的Token,ID只要不跟之前重复就行。
4、配置SonarQube Server
菜单:管理Jenkins -> 系统设置 ,或者直接访问:http://192.168.88.44:8080/configure
找到SonarQube servers配置项增加SonarQube Server
配置项说明:
配置项 | 说明 |
---|---|
Name | Sonar服务名,按照自己习惯来即可 |
Server URL | SonarQube Server的主页地址 |
Sonar authentication token | Sonar Token,选择已添加的凭据即可 |
5、配置SonarQube Scanner
菜单:管理Jenkins -> 全局工具配置 ,或者直接访问:http://192.168.88.44:8080/configureTools
,找到SonarQube Scanner
配置项然后点击SonarQube Scanner 安装
为了省事儿,这里我们选择自动安装,版本选择2.8
以上各个配置项,记得点击保存
按钮
三、Jenkins构建Job配置
如果已经有了Maven+Java项目的构建Job直接选择配置即可,如果没有可以参考:https://ken.io/note/jenkins-maven-git-java-integration ,添加一个Maven+Java项目的构建任务。
参考:https://ken.io/note/jenkins-maven-git-java-integration
1、添加SonarQube Scanner
在Post Steps
配置项中点击:Add post-build step
,然后选择:Execute SonarQube Scanner
2、配置SonarQube Scanner
这里我们只需要在Analysis properties
中配置sonar扫描的参数即可
sonar.projectKey=io.ken.tutorial.helloworld
sonar.projectName=helloworld
sonar.projectVersion=1.0
sonar.sources=src
sonar.java.binaries=target/classes
sonar.language=java
参数说明:
参数项 | 说明 |
---|---|
sonar.projectKey | 项目Key,需要唯一,建议使用GroupId+ArtifactId |
sonar.projectName | 项目名称,跟ArtifactId保持一致即可 |
sonar.projectVersion | 项目版本,跟pom.xml保持一致即可 |
sonar.sources | 源码目录,Java项目默认就是src,如果项目有多个module,那就需要配置为{moduleDirectory}/src |
sonar.java.binaries | 编译产出的classes目录,如果项目有多个module,那就需要配置为{moduleDirectory}/target/classes |
3、构建&扫描
完成以上SonarQube Scanner配置,就可以进行项目构建,构建成功后,访问SonarQube,将在项目列表看到扫描的结果:
如果构建失败,可能是访问SonarQube Server出现了问题,或者SonarQube Scanner配置的有问题,具体可以查看Jenkins构建Job的控制台输出