准备工作:
1、jenkins
jenkins的工作方法有两种,这里随意,哪种都可以,我是选择放在了tomcat里面,便于管理。
2、sonarqube6.7.7 LTS
这里说明一下为什么要选6.7.7这个版本,因为后来从7版本开始,好像就不支持MySQL了,只支持Oracle,PostgreSQL,MSSQL。之前的版本启动的时候又提示什么版本太旧,不是Long Team Support版,所以干脆就选择了6.7.7这个LTS版。
3、MySQL5.6
手上只有这个版本的包,又懒得去下载,就用这个了。
CentOS自带的Mariadb版本太低,SonarQube不支持,不然就用自带的了。
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> CREATE USER ‘sonar’ IDENTIFIED BY ‘sonarpassword’;
mysql> GRANT ALL ON sonar.* TO ‘sonar’@’%’ IDENTIFIED BY ‘sonarpassword’;
mysql> GRANT ALL ON sonar.* TO ‘sonar’@’localhost’ IDENTIFIED BY ‘sonarpassword’;
mysql> FLUSH PRIVILEGES;
sonar安装好后直接sonar.sh start就行了,这里不可以用root用户直接运行,新建个用户就行了。
记得在sonar的配置文件里把mysql的用户名密码填上.
sonar.jdbc.username=sonar
sonar.jdbc.password=sonarpassword
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
然后sonarqube里登陆,生成token,保存下来,jenkins里安装sonarqube-scanner插件,名称,服务器,登陆验证填好。
在项目里选择Add post-build step,
Analysis properties填上:
sonar.projectKey=apigateway
sonar.projectName=apigateway #这个可自定义,报告发送到sonarqube后,sonarqube将创建以此命名的project
sonar.language=java #表示分析java源代码
sonar.java.source=1.7 #表示jdk版本为1.7
sonar.sources=${WORKSPACE}/src/main/java #表示源代码的目录
我的jenkins在打包的时候提示500错误:
INFO: Analysis report generated in 9263ms, dir size=11 MB
INFO: Analysis reports compressed in 5699ms, zip size=4 MB
INFO: ————————————————————————
INFO: EXECUTION FAILURE
INFO: ————————————————————————
INFO: Total time: 6:28.455s
INFO: Final Memory: 29M/1274M
INFO: ————————————————————————
ERROR: Error during SonarQube Scanner execution
ERROR: Failed to upload report – 500: An error has occurred. Please contact your administrator
ERROR:
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
这里修改MySQL的max_allowed_packet就可以了,可以在my.cnf里修改,也可以在库里修改:
show VARIABLES like '%max_allowed_packet%';
set global max_allowed_packet=6*1024*1024
修改完成后要重启MySQL和SonarQube,当时就因为只重启了数据库没重启SonarQube,导致一直没有上传通过。
参考地址: