Sonar Qube 持续集成实践

1.什么是SonarQube

sonarqube 是一个开源的代码质量管理系统,用于检测代码中的错误,漏洞和代码规范,他可以基于现有的Gitlab、Jenkins 集成、以便在项目拉取后进行连续的代码检查。

image.png

1.1.使用SonarQube前提

1.sonarqube基于java开发所以需要安装JDK1.8版本。

2.SonarQube需要依赖MySQL数据库,至少5.6以上版本。

3.SonarQube 的小型实例至少需要4G内存,如果大型实例需要16GB

 

2.Sonar Qube安装

2.1环境准备

[root@mail logs]# systemctl stop firewalld
[root@mail logs]# systemctl enable firewalld

2.2安装SonarQube依赖工具

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

2.3启动数据库,然后为数据库配置密码,创建sonar库

systemctl restart mysqld
mysqladmin password 1234
mysql -uroot -p1234 -e "create database sonar default character set utf8;"
 mysql -uroot -p1234 -e "show databases;"

2.4下载SonarQube 并安装解压至/usr/local/

官方下载地址:https://binaries.sonarsource.com/

 unzip sonarqube-7.0.zip -d /usr/local/
 useradd sonar
  chown -R sonar.sonar /usr/local/sonarqube-7.0/
  s /usr/local/sonarqube-7.0/ /usr/local/sonarqube

2.5修改sonarqube数据库配置文件

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

2.6启动 SonarQube

su - sonar -c "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh restart"


默认密码admin/admin
复制令牌进行保留

image.pngimage.png

3.SonarQube 插件管理

3.1安装中文汉化插件Chinese Pack

      安装后重启SonarQube

image.png

3.2安装代码检查插件

默认安装了C Java Python  PHP Js 等质量分析工具。可以根据项目自行安装html css golang

image.png

 

4.Sonarquebe项目分析

4.1.分析html java 项目

如以上项目需要安装依赖sonar-scaner命令。

 wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-4.0.zip
 unzip sonar-scanner-cli-4.0.0.1744-linux.zip -d /usr/local/
 ln -s /usr/local/sonar-scanner-4.0.0.1744-linux/ /usr/local/sonar

4.2 配置sonar-scanner客户端指向SonarQube服务端以及认证的token

[root@node-140 sonar]# cat /usr/local/sonar/conf/sonar-scanner.properties

sonar.host.url=http://192.168.100.118:9000
sonar.login=e6e89488da1d3051006be436a4899d4209771851
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
sonar.sourceEncoding=UTF-8

image.png

 

5.分析项目

5.1.分析html项目

[root@node-140 ESL前端_山田117]# /usr/local/sonar/bin/sonar-scanner -Dsonar.projectKey=html -Dsonar.sources=. -X

image.png

 

5.2 分析java项目

java项目可以通过maven进行代码质检,无需使用sonr-scaner工具,安装maven工具即可。

yum -y install maven

获取java代码,进入项目目录,使用mvn进行代码扫描

mvn sonar:sonar   -Dsonar.host.url=http://192.168.100.118:9000   -Dsonar.login=e6e89488da1d3051006be436a4899d4209771851

 

6.jenkins集成SonarQube

通常sonarqube需要配合持续继承工具使用,可以做到拉起代码则立即执行质量检测

1.插件安装-系统管理-插件管理-》SonarQube Scaner for Jenkins

2.需要在jenkins上配置Sonarqube服务端

系统管理-系统设置-sonarqube

Name随便填,url填写Sonarqube的地址,token填写之前安装,SonarQube的token

 

image.png

6.1jenkins 构建前端项目

image.png

6.2参数如下

sonar.projectName=${JOB_NAME}  sonarqube显示名称
sonar.projectKey=html    唯一标识
sonar.sources=.    扫描那个项目的源码

image.png

6.3配置maven项目集成Sonar

maven项目可以使用sonar-Scanner工具,也可以使用maven的方式进行检测,两种方式任选其一即可,

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

image.png

sonar.projectName=${JOB_NAME}

sonar.projectKey=java

sonar.sources=. 

sonar.java.binaries=target/classes

image.png

根据持续集成的设计,代码从提交到生产

image.png

 
 
原文地址:https://www.cnblogs.com/sseban/p/14523452.html