封尘网

让学习成为一种习惯!

sonarqube 整合Jenkins

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

提醒:本文最后更新于 1188 天前,文中所描述的信息可能已发生改变,请谨慎使用。