目录
- 说明
- 七、集成Sonar Qube
- 7.1 Sonar Qube介绍
- 7.2 Sonar Qube环境搭建
- 7.2.1 Sonar Qube安装——docker安装
- 7.2.2 访问sonarqube
- 7.2.3 安装中文插件
- 7.3 Sonar Qube基本使用
- 7.3.1 Sonar-scanner实现代码检测
- 7.4 Jenkins集成Sonar Qube
- 7.4.1 Jenkins中安装sonarqube插件
- 7.4.2 Jenkins系统配置Sonar Qube
- 7.4.3 全局配置Sonar-scanner
- 7.4.4 构建任务
说明
这里使用Jenkins服务器部署Sonar Qube来检测代码,如果电脑内存允许,也可以单独加一台服务器部署Sonar Qube。
七、集成Sonar Qube
7.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安装——docker安装
Sonar Qube在cent os 7.9版本中已经放弃了对MySQL的支持,并且建议在商业环境中采用PostgreSQL,那么安装Sonar Qube时需要依赖PostgreSQL。
并且这里会安装Sonar Qube的长期支持版本8.9
拉取镜像 docker pull postgresdocker pull sonarqube:8.9.6-community
编写docker-compoe.yml # 创建目录sonarqube_docker,在此目录下编辑yml文件cd /usr/local/dockermkdir sonarqube_dockercd sonarqube_dockerlsvim docker-compose.yml下面内容粘贴进去:version: "3.1"services:db:image: postgrescontainer_name: dbports:- 5432:5432 # 默认端口5432networks:- sonarnetenvironment:POSTGRES_USER: sonarPOSTGRES_PASSWORD: sonarsonarqube:image: sonarqube:8.9.6-communitycontainer_name: sonarqubedepends_on:- dbports:- "9000:9000"networks:- sonarnetenvironment:SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonarSONAR_JDBC_USERNAME: sonarSONAR_JDBC_PASSWORD: sonarnetworks:sonarnet:driver: bridge
配置最大内存 # 设置最大内存vim /etc/sysctl.conf# 加入以下内容vm.max_map_count=262144# 重新加载sysctl -p
启动容器 cd /usr/local/docker/sonarqube_dockerdocker-compose up -d
需要一定时间启动,可以可以查看容器日志,看到如下内容代表启动成功
7.2.2 访问sonarqube
访问Sonar Qube首页——用IP+端口号,这里是192.168.2.211:9000。默认用户名和密码都为admin
还需要重新设置一次密码
进入Sonar Qube首页
7.2.3 安装中文插件
安装成功后需要重启,安装失败重新点击install重装即可。
安装成功后,会查看到重启按钮,点击即可
重启后查看效果
7.3 Sonar Qube基本使用
Sonar Qube的使用方式很多,Maven可以整合,也可以采用sonar-scanner的方式,再查看Sonar Qube的检测效果
7.3.1 Sonar-scanner实现代码检测
下载Sonar-scanner压缩包:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
下载4.6.x版本即可,要求Linux版本
解压并配置sonar服务端信息
① 由于是zip压缩包,需要安装unzip解压插件
yum -y install unzip
②解压压缩包
unzip sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip
③改名并移动/usr/local/docker/jenkins_docker/data/下
cdmv sonar-scanner-4.6.1.2450-linux/ sonar-scannermv sonar-scanner /usr/local/docker/jenkins_docker/data/
④配置SonarQube服务端地址,修改conf下的sonar-scanner.properties文件
cd /usr/local/docker/jenkins_docker/data/sonar-scanner/confvim sonar-scanner.properties
执行命令检测代码 # 在项目所在目录执行以下命令,我这里在/usr/local/docker/jenkins_docker/data/workspace/mytest下执行/usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=linux-test -Dsonar.login=23f05c92e77dfeb4da952f461286d5f06ef34383 -Dsonar.projectKey=linux-test -Dsonar.java.binaries=./target/解释:/usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner :sonar-scanner命令所在目录-Dsonar.sources=./ :检测的文件所在目录-Dsonar.projectname=linux-test :给检测项目命名-Dsonar.login=23f05c92e77dfeb4da952f461286d5f06ef34383 :sonarqube网页上生成令牌-Dsonar.projectKey=linux-test :指定项目标识(key)-Dsonar.java.binaries=./target/ :设置编译过后的内容在哪
Ps:主要查看我的sonar-scanner执行命令的位置,这里是/usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner
查看日志:
查看SonarQube界面检测结果
7.4 Jenkins集成Sonar Qube
Jenkins继承Sonar Qube实现代码扫描需要先下载整合插件
7.4.1 Jenkins中安装sonarqube插件
在Jenkins中下载SonarQube Scanner插件
7.4.2 Jenkins系统配置Sonar Qube
先在sonarqube上开启Sonar Qube权限验证,一般默认是开启的
获取Sonar Qube的令牌
在Jenkins上配置Sonar Qube信息
【系统管理】——【系统配置】
找到SonarQube servers
密码可能添加不了,没关系,先应用保存,然后再回来添加
选择刚才加好的信息,应用保存
7.4.3 全局配置Sonar-scanner
将Sonar-scaner添加到Jenkins数据卷中并配置全局配置
mytest任务里构建操作配置sonar-scanner
编辑参数
sonar.projectname=${JOB_NAME}sonar.projectKey=${JOB_NAME}sonar.source=./sonar.java.binaries=target
7.4.4 构建任务
点击立即构建,如果报错,检查/usr/local/docker/jenkins_docker/data/workspace/mytest下是否有隐藏文件“.scannerwork”,有的话就删掉,再次构建。