4:Jenkins集成SonarQube质检

07.Jenkins集成SonarQube质检

本章课程内容大纲
1.什么是SonarQube
2.使用SonarQube前提
3.SonarQube服务安装
4.sonar-scanner进行代码质检
5.SonarQube插件相关管理
6.Jenkins集成SonarQube
  Jenkins添加SonarQube服务端
  Jenkins添加SonarQube客户端
7.Jenkins配置项目集成SonarQube

1.SonarQube基本概述

1.什么是SonarQube
SonarQube是一个开源的代码质量管理系统,用于检测代码中的错误、漏洞。它可以与Jenkins集成,让我们能自动化进行代码质量扫描。

2.使用SonarQube前提
1.SonarQube基于Java开发,所以需要安装Open JDK8版本。
2.SonarQube需要依赖MySQL数据库,至少5.6版本以上。
3.SonarQube的小型实例至少需要4GB内存,如果是大型实例需要16GB

2.SonarQube服务安装

1.环境准备

[root@sonarqube ~]# systemctl stop firewalld 
[root@sonarqube ~]# systemctl disable firewalld
[root@sonarqube ~]# setenforce 0

2.安装Sonarqube依赖工具

[root@sonarqube ~]# yum install git java unzip wget -y
[root@sonarqube ~]# wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql56-community-el7/mysql-community-server-5.6.45-2.el7.x86_64.rpm
[root@sonarqube ~]# wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql56-community-el7/mysql-community-client-5.6.45-2.el7.x86_64.rpm
[root@sonarqube ~]# wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql56-community-el7/mysql-community-common-5.6.45-2.el7.x86_64.rpm
[root@sonarqube ~]# wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql56-community-el7/mysql-community-libs-5.6.45-2.el7.x86_64.rpm
[root@sonarqube ~]# yum localinstall -y mysql-community-*

3.启动数据库,然后为数据库配置密码。最后创建一个sonar库

[root@sonarqube ~]# systemctl start mysqld
[root@sonarqube ~]# mysqladmin password oldxu.com
[root@sonarqube ~]# mysql -uroot -poldxu.com -e "CREATE DATABASE sonar DEFAULT CHARACTER SET utf8;"
[root@sonarqube ~]# mysql -uroot -poldxu.com -e "show databases;"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sonar              |
+--------------------+

4.下载sonarqube,并安装解压至/usr/local

[root@sonarqube ~]# wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.0.zip
[root@sonarqube ~]# unzip sonarqube-7.0.zip -d /usr/local/
[root@sonarqube ~]# useradd sonar
[root@sonarqube ~]# chown -R sonar.sonar /usr/local/sonarqube-7.0/
[root@sonarqube ~]# ln -s /usr/local/sonarqube-7.0/ /usr/local/sonarqube

5.修改sonarqube连接数据库配置文件

[root@sonarqube ~]# vim /usr/local/sonarqube/conf/sonar.properties
sonar.jdbc.username=root
sonar.jdbc.password=oldxu.com
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

6.启动sonarqube服务(由于es必须普通用户启动,所以不能使用root用户,否则启动失败)

[root@sonarqube ~]# su - sonar -c "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh start"

7.访问sonarqube界面访问 通过浏览器访问http://hostname:9000
点击登录-->输入用户名:admin 用户密码:admin


8.SonarQube初始化操作,配置认证Token。(如果有人使用该Token访问Sonar则无需输入密码)

9.如何使用SonarQube质量分析,如果是java代码直接安装maven3版本以上实现质检。

10.如何使用SonarQube质量分析,如果是非Java代码,则需要使用sonar-scanner工具实现代码质检。

PS: 现在不着急进行代码质量检测,还是需要安装一些插件在开始我们的工作。

3.SonarQube检测代码

前面已经将SonarQube安装完成,所以接下来只需要对代码进行分析测试即可。(要保证手动测试成功)

1.分析html、php、python等项目
1.如上项目依赖于sonar-scanner命令,所以需要安装 sonar-scanner工具

[root@jenkins ~]# wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.0.0.1744-linux.zip
[root@jenkins ~]# unzip sonar-scanner-cli-4.0.0.1744-linux.zip -d /usr/local/
[root@jenkins ~]# ln -s /usr/local/sonar-scanner-4.0.0.1744-linux/ /usr/local/sonar-scanner

2.配置sonar-scanner客户端指向SonarQube服务端,以及认证的token。(也可不配)

[root@jenkins ~]# vim /usr/local/sonar-scanner/conf/sonar-scanner.properties
sonar.host.url=http://sonar.oldxu.com:9000
sonar.login=c158e32b74d0bb20ac115fa26b88514bb5e41297
sonar.sourceEncoding=UTF-8

3.手动从gitlab仓库获取代码,进入项目目录,使用sonar-scanner进行代码扫描

[root@jenkins ~]# /usr/local/sonar-scanner/bin/sonar-scanner \
-Dsonar.projectKey=html \
-Dsonar.sources=.
#-Dsonar.host.url=http://sonar.oldxu.com:9000
#-Dsonar.login=c158e32b74d0bb20ac115fa26b88514bb5e41297

4.登陆sonarqube查看项目的质量检测情况。

2.分析JAVA项目
1.Java项目可以通过maven进行代码质检,无需使用sonar-scanner工具,安装maven工具即可。

[root@jenkins ~]# yum install maven -y

2.手动从gitlab仓库获取Java代码,进入项目目录,使用mvn进行代码扫描。

[root@jenkins ~]# mvn sonar:sonar \
-Dsonar.host.url=http://sonar.oldxu.com:9000 \
-Dsonar.login=c158e32b74d0bb20ac115fa26b88514bb5e41297
#-Dsonar.java.binaries=target/sonar

3.检查sonarqube结果

4.Sonarqube插件安装

1.安装中文汉化插件
1.页面上找到Administration > Marketplace --> 搜索框chinese,出现一个Chinese Pack,然后点击install
2.界面会提示 reset重启SonarQube,重启再次打开则为汉化。

2.安装代码检查插件
默认已经安装 C Java Python Php Js 等代码的质量分析工具。可以根据项目自行安装 html css go
PS:一个项目如果使用了java css js html,那么默认情况下仅会检测,java、js等代码的漏洞和bug。
如果安装了html、css等插件,那么则会检查该项目代码中 java js html css 等代码的漏洞和bug。

3.离线安装插件
1.SonarQube插件安装可能需要很长时间,所以可以选择之前已安装过的插件,直接导入plugins目录。

[root@sonarqube ~]# mv /usr/local/sonarqube/extensions/plugins/ /usr/local/sonarqube/extensions/plugins_bak
[root@sonarqube ~]# tar xf sonar_plugins.tar.gz  -C /usr/local/sonarqube/extensions/
[root@sonarqube ~]# chown -R sonar.sonar /usr/local/sonarqube/extensions/plugins/
[root@sonarqube ~]# su - sonar -c "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh restart"

2.导入插件重启后,可以上应用中心查看已安装过的插件。

5.Jenkins集成SonarQube

通常sonarqube需要配合持续集成工具一起使用,可以做到拉取最新代码则立即进行质量检测。

1.插件安装。系统管理-->插件管理-->SonarQube Scanner for Jenkins

2.需要在Jenkins上配置SonarQube服务端
系统管理-->系统设置-->sonarQube (告诉jenkins SonarQubeServers服务端地址)
 1.Name 可以随意填写
 2.URL 添加SonarQube的地址
 3.token 添加一个Secret text 填写之前安装SonarQube的Token
PS: 如果SonarQube没有在配置->权限-->启用Force user authentication 则可忽略进行token验证操作。

3.同时还需要在Jenkins上配置Sonar-Scanner客户端工具路径
系统管理-->全局工具配置(告诉jenkins SonarScanner在本地哪个路径)
 1.Name 可以随意填写,但最好有规范
 2.SONAR_RUNNER_HOME 填写sonar-scanner本地路径
PS:如果不配置sonar-scanner路径,则无法进行代码扫描

6.Jenkins配置项目集成Sonar

1.为项目创建freestyle的Job (填写项目git地址、以及静态代码扫描命令)

2.使用的参数如下

sonar.projectName=${JOB_NAME}   #项目在sonarqube上的显示名称
sonar.projectKey=html           #项目的唯一标识,不能重复
sonar.sources=.                 #扫描哪个项目的源码

3.如果是 Java 项目,我们可以采用两种方式进行代码质量检测。
第一种方式,通过调用maven方式进行代码质检。

第二种方式,通过Sonar-Scanner方式进行代码质检。

sonar.projectName=${JOB_NAME}
sonar.projectKey=java
sonar.sources=.
sonar.java.binaries=target/sonar

最后检查SonarQube质检结果。

当然,最后建议使用gitlab的webhook,只要开发提交代码,则触发Jenkins项目构建,并推送至Sonarqube进行质量检测,最后通过钉钉反馈检测结果。





猜你喜欢

转载自blog.csdn.net/xiaoleinb/article/details/112636638