前言
之前搭建了jenkins自动构建,想了想干脆devOps的一套全搭起来玩玩算了,今天要干的就是集成一下代码质量管控的神器Sonar。
Sonar可以检查代码是否有BUG,你的代码注释率是多少,代码有一些建议,编写语法的建议,很方便PM来控制代码质量。
他还可以跟Jenkins集成,在自动构建的时候自动检测,发送邮件给PM。
总之,这么好的工具,我们一起来搞起吧。
一、下载安装SonarQube
直接百度搜索官网,进去找到下载地址,这里我采用6.7.6版本
1直接wget下载到服务器上
weget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.6.zip
2然后解压
unzip sonarqube-6.7.6.zip
3创建mysql数据库,这里不赘述,我本来就装了,直接新建了一个库
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> GRANT ALL ON mysqladmin.* TO 'sonar'@'localhost' IDENTIFIED BY 'mysqladmin';
mysql> GRANT ALL ON mysqladmin.* TO 'sonar'@'%' IDENTIFIED BY 'mysqladmin';
mysql> FLUSH PRIVILEGES;
4敲黑板,坑点,创建elasticsearch用户
新版本SonarQube加入了elasticsearch ,同时引入了elasticsearch的坑,那就是不能使用root用户运行,如果直接启动会报错
java.lang.RuntimeException: can not run elasticsearch as root
解决方法为创建一个新用户,授权并使用新用户启动sonar:
adduser elsearch
passwd elsearch
输入两次密码
(PS.偷偷说一句,我之前在服务器上搭了elk,这些都做过了,上面是随便写的,应该没问题……)
用户创建好之后,给sonar目录授权(使用root用户)
chown -R elsearch:elsearch /mpjava/soft/sonarqube-6.7.6
授权之后切换到elsearch用户
su elsearch
5修改配置文件/sonarqube-6.7.6/conf/sonar.properties,配置数据库
#数据库用户
sonar.jdbc.username=mysqladmin
#数据库密码
sonar.jdbc.password=mysqladmin
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&character
6.修改防火墙设置,开放9000端口(如果自己修改了默认端口,按实际情况来)
7.启动
[elsearch@ap01 sonarqube-6.7.6]$ ./bin/linux-x86-64/sonar.sh start
Starting SonarQube...
Started SonarQube.
二、初始化SonarQube
点击右上角Sign In,初始用户名密码为admin/admin
第一次登陆会让你输入一个token,输入之后会返回一个key给你
下一步是选择你的语言与编译工具,根据你选择的,系统会给出集成和运行方法
好了,现在基本搞定,不过英文看起来老难受了,还是装个中文插件吧
我这里直接傻瓜安装,完成后重启,界面就变中文了……
三、开始检测
首先来个基本的,我的项目是Gradle项目,修改build.gradle,加入以下内容
buildscript {
repositories {
jcenter()
maven {url "https://plugins.gradle.org/m2/"}
}
dependencies {
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6"
}
}
apply plugin: "org.sonarqube"
sonarqube{
properties{
property "sonar.host.url", "http://192.168.95.45:9000/" //sonarqube 服务器地址
property "sonar.verbose", "true"
property "sonar.login", "3cf7d988eb5eca00ed63ce2aced8a497b1a11df6" //sonar.login 配置token,不用配置也可以检测
}
}
接着,输入命令
gradle sonarqube
#跳过测试
gradle sonarqube -x test
检测完成,登陆sonarQube
OK!下面就根据提示修改代码的质量问题吧
四、集成到jenkins
登陆jenkins,这里直接采用最简便办法……增加一个构建动作,执行gradle sonarqube
好了,当jenkins构建的时候就会自动检测了,每次构建之后还是去控制台看看结果,有问题就再改了提交,自动构建。
还有其他的集成方法,安装N多插件啥的,大家有兴趣可以试试。