Sonar Qube 持续集成实践
1.什么是SonarQube
sonarqube 是一个开源的代码质量管理系统,用于检测代码中的错误,漏洞和代码规范,他可以基于现有的Gitlab、Jenkins 集成、以便在项目拉取后进行连续的代码检查。
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
复制令牌进行保留
3.SonarQube 插件管理
3.1安装中文汉化插件Chinese Pack
安装后重启SonarQube
3.2安装代码检查插件
默认安装了C Java Python PHP Js 等质量分析工具。可以根据项目自行安装html css golang
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
5.分析项目
5.1.分析html项目
[root@node-140 ESL前端_山田117]# /usr/local/sonar/bin/sonar-scanner -Dsonar.projectKey=html -Dsonar.sources=. -X
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
6.1jenkins 构建前端项目
6.2参数如下
sonar.projectName=${JOB_NAME} sonarqube显示名称
sonar.projectKey=html 唯一标识
sonar.sources=. 扫描那个项目的源码
6.3配置maven项目集成Sonar
maven项目可以使用sonar-Scanner工具,也可以使用maven的方式进行检测,两种方式任选其一即可,
第一种方式,通过Sonar-Scanner方式进行代码质检。
sonar.projectName=${JOB_NAME}
sonar.projectKey=java
sonar.sources=.
sonar.java.binaries=target/classes
根据持续集成的设计,代码从提交到生产