DevOps搭建(五)-集成Sonar Qube[SonarQube,GitLab,Jenkins]

DevOps搭建(五)-集成Sonar Qube[SonarQube,GitLab,Jenkins]
Flaw7.1 Sonar Qube介绍
Sonar Qube是一个开源的代码分析平台,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。
Sonar Qube可以与多种软件整合进行代码扫描,比如Maven,Gradle,Git,Jenkins等,并且会将代码检测结果推送回Sonar Qube并且在系统提供的UI界面上显示出来
| Sonar Qube的UI界面 |
|---|
![]() |
7.2 Sonar Qube环境搭建
7.2.1 Sonar Qube安装
Sonar Qube在7.9版本中已经放弃了对MySQL的支持,并且建议在商业环境中采用PostgreSQL,那么安装Sonar Qube时需要依赖PostgreSQL。
并且这里会安装Sonar Qube的长期支持版本8.9
拉取镜像
1
2docker pull postgres
docker pull sonarqube:8.9.3-community编写docker-compoe.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28version: "3.1"
services:
db:
image: postgres
container_name: db
ports:
- 5432:5432
networks:
- sonarnet
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
sonarqube:
image: sonarqube:8.9.3-community
container_name: sonarqube
depends_on:
- db
ports:
- "9000:9000"
networks:
- sonarnet
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
networks:
sonarnet:
driver: bridge启动容器
1
docker-compose up -d
sonarqube启动失败需要设置sysctl.conf文件信息
设置vm.max_map_count 并执行命令刷新
1
sysctl -p
重新启动需要一定时间启动,可以可以查看容器日志,看到如下内容代表启动成功
容器日志 访问Sonar Qube首页
登录 还需要重新设置一次密码
重新设置密码【这里我改成了:qingyun】 Sonar Qube首页
Sonar Qube首页
7.2.2 安装中文插件
| 安装中文插件 |
|---|
![]() |
安装成功后需要重启,安装失败重新点击install重装即可。
安装成功后,会查看到重启按钮,点击即可
| 重启按钮 |
|---|
![]() |
重启后查看效果
| 首页效果 |
|---|
![]() |
7.3 Sonar Qube基本使用
Sonar Qube的使用方式很多,Maven可以整合,也可以采用sonar-scanner的方式,再查看Sonar Qube的检测效果
7.3.1 Maven实现代码检测
修改Maven的settings.xml文件配置Sonar Qube信息
1
2
3
4
5
6
7
8
9
10
11<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.login>admin</sonar.login>
<sonar.password>qingyun</sonar.password>
<sonar.host.url>http://192.168.73.151:9000</sonar.host.url>
</properties>
</profile>在代码位置执行命令:mvn sonar:sonar
执行代码检测 查看Sonar Qube界面检测结果
Sonar Qube检测结果
7.3.2 Sonar-scanner实现代码检测
下载Sonar-scanner:
1
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip
下载4.6.x版本即可,要求Linux版本
解压并配置sonar服务端信息
由于是zip压缩包,需要安装unzip解压插件
1
yum -y install unzip
解压压缩包
1
unzip sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip
配置sonarQube服务端地址,修改conf下的sonar-scanner.properties
配置服务端信息
执行命令检测代码
1
2# 在项目所在目录执行以下命令
~/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=demo -Dsonar.projectKey=java -Dsonar.java.binaries=target/查看日志信息 查看SonarQube界面检测结果
检测结果
7.4 Jenkins集成Sonar Qube
Jenkins继承Sonar Qube实现代码扫描需要先下载整合插件
7.4.1 Jenkins安装插件
| 下载Sonar Qube插件 |
|---|
![]() |
![]() |
![]() |
7.4.2 Jenkins配置Sonar Qube
开启Sonar Qube权限验证
开启Sonar Qube权限校验 获取Sonar Qube的令牌
获取令牌 配置Jenkins的Sonar Qube信息
7.4.3 配置Sonar-scanner
将Sonar-scaner添加到Jenkins数据卷中并配置全局配置
配置Sonar-scanner 配置任务的Sonar-scanner
配置任务的Sonar-scanner 1
2
3
4sonar.projectname=${JOB_NAME}
sonar.projectKey=${JOB_NAME}
sonar.source=./
sonar.java.binaries=target/
7.4.4 构建任务
| 构建任务 |
|---|
![]() |
![]() |






































