Jenkins已经在环境中使用了三个多月了。但是一直都没有做到代码质量的检查,网上找到了sonarqube 它是一个开源平台,用于管理源代码的质量。Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。支持的语言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等。
详细介绍请看官方的说明:
本次是在Jenkins环境基础上搭建的;就是说Jenkis与sonarqube是同一服务器:
说明:sonarqube-5.5.zip 数据库使用:Mysql5.7.9官方至少要5.6以上,之前没留意一直报错;同时JDK版本要1.7以上。
sonar-scanner-2.6.1.zip 这是测试代码使用的;【本次使用5.5的版本】
如果安装sonarqube-5.6的话,JDK要1.8以上的版本,不支持1.7的了。
sonarqube下载地址:https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.5.zip
sonar-scanner下载地址:https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-2.6.1.zip
安装方法:
unzip sonarqube-5.5.zip
mv sonarqube-5.5 /data/
ln -s /data/sonarqube-5.5/ /data/sonar
unzip sonar-scanner-2.6.1.zip
mv sonar-scanner-2.6.1 /data/
ln -s /data/sonar-scanner-2.6.1 /data/sonar-scanner
配置环境变量:
vim ~/.bash_profile
#sonar
export SONAR_HOME=/data/sonar
export SONAR_SCANNER=/data/sonar-scanner
export PATH=$PATH:$SONAR_HOME/bin:$SONAR_SCANNER/bin
使用配置生效:
source ~/.bash_profile
修改sonarqube配置:
cd /data/sonar/conf
vim sonar.properties
大至修改如下:
[root@Redis1 conf]# egrep -v "^.$|^#" sonar.properties
sonarsonar.jdbc.username=sonar #Mysql中的用户名
sonarsonar.jdbc.password=sonar #Mysql中的用户密码
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.driverClassName: com.mysql.jdbc.Driver
sonar.web.host=192.168.254.21 #主机,默认监听所有的
sonar.web.port=9000 #默认也是9000端口
sonar.web.http.maxThreads=50
sonar.web.http.minThreads=5
sonar.web.http.acceptCount=25
sonar.search.javaOpts=-Xmx1G -Xms256m -Xss256k -Djava.net.preferIPv4Stack=true \
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 \
-XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError
sonar.log.level=INFO
sonar.path.logs=logs
sonar.log.rollingPolicy=time:yyyy-MM-dd
其实在端口后面几行可以不修改,但是如果你系统的内存太小可能会导致无法启动,就需要调整sonar.search.javaOpts参数。
修改sonar-scanner配置:
cd /data/sonar-scanner/conf
vim sonar-scanner.properties
[root@Redis1 conf]# egrep -v "^.$|^#" sonar-scanner.properties
sonar.host.url=http://192.168.254.21:9000
sonar.sourceEncoding=UTF-8
sonarsonar.jdbc.username=sonar #Mysql中的用户名
sonarsonar.jdbc.password=sonar #Mysql中的用户密码
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
添加一个启动脚本到/etc/init.d/目录下:
cat >/etc/init.d/sonar <<-EOF
#!/bin/sh
#
# rc file for SonarQube
#
# chkconfig: 345 96 10
# description: SonarQube system (www.sonarsource.org)
#
### BEGIN INIT INFO
# Provides: sonar
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: SonarQube system (www.sonarsource.org)
# Description: SonarQube system (www.sonarsource.org)
### END INIT INFO
/usr/bin/sonar $*
EOF
添加执行权限:
chmod +x /etc/init.d/sonar
启动方法:
/etc/init.d/sonar start
登陆到后台,创建一个用户token:
完成上面后,即完成了sonarqube的安装;接下来整合Jenkins;
在Jenkins——插件管理——安装插件:SonarQube Plugin 完成后把Jenkins重启一次;
配置:系统管理——系统设置——SonarQube servers
把上面创建的token值复制到这里即可。
完成上面后保存;然后在项目中加上调用参数即可。
编辑项目——配置——Add post-build step——Execute SonarQube Scanner