今天原本想作Jenkins+Docker的持续集成,参考文章 中用了很大的篇幅来说SonarQube的使用,想着代码检查未来确定要作,因此干脆研究了一下Jenkins中如何使用SonarQube。html
一 启动一个SonarQube服务器java
1)下载 最新版的zip安装包:mysql
2) 以root登陆到服务器上,建立名为sonar的组和帐号:linux
groupadd sonar useradd -g sonar sonar id sonar echo "sonar" | passwd --stdin sonar &> /dev/null
操做完以后,就可使用sonar:sonar登陆到服务器上。web
3)确保java在服务器上已经安装:sql
java -version
4) 确保mysql已经安装:数据库
mysql --version
5) 设置数据库:浏览器
# mysql -uroot –p mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; mysql> CREATE USER 'sonar' IDENTIFIED BY 'Zkong_****'; mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'Zkong_****'; mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'Zkong_****'; mysql> FLUSH PRIVILEGES;
6)安装SonarQube:服务器
将下载到的sonarqube-7.7.zip文件上传到sonar用户的主目录下(如:/home/sonar)工具
解压
unzip -oq sonarqube-7.7.zip
修改配置文件 sonarqube-7.7/conf/sonar.properties
sonar.jdbc.username=sonar sonar.jdbc.password=Zkong_**** sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
SonarQube服务器默认使用9000端口,若是已经被占用能够修改sonar.web.port的值来改变。
7)启动:
sonarqube-7.7/bin/linux-x86-64/sonar.sh start 启动服务
sonarqube-7.7/logs/sonar.log 启动日志
用root帐户权限启动时会有权限问题(参考)
执行
chown -R sonar:soanr sonarqube-7.7
而后经过sonar用户登陆,并执行sonar.sh start来启动(过程当中可能须要root删除root启动过程当中生成的temp文件,详情参考sonar.log文件)
8) 登陆:
浏览器地址输入 http://服务器ip:9000/, 用admin:admin帐号可登陆
二 Jenkins上配置SonarQube
1)在插件管理的可选插件中搜索sonarqube,选择SonarQube Scanner for Jenkins安装(SonarQube Plugin貌似已经下架)
2)添加SonarQube服务器:
系统管理->系统设置
最新的版本的SonarQube Scanner只支持token登陆,token的获取能够经过登陆服务器经过如下步骤得到:
3)在Jenkins服务器上安装SonarQube Scanner:
系统管理->全局工具配置:选择自动安装(手动安装作好配置)
4)在任务配置的Post Steps中添加"Execute SonarQube Scanner" step.
注意:Task to run必定留空,不然执行会报错!
Analysis properties参数设置:
sonar.projectKey=jsh sonar.projectName=jsh sonar.projectVersion=1.0 sonar.sourceEncoding=UTF-8 #根据实际状况进行填写 sonar.java.binaries=C:\\Users\\Administrator\\.jenkins\\workspace\\JSH\\target\\classes\\ sonar.sources=C:\\Users\\Administrator\\.jenkins\\workspace\\JSH\\src\\main\\java\\ sonar.exclusions=**/*.xml,**/*.bat
5)运行结果:
任务执行完成以后会给出代码分析的连接