SonarQube和jenkins(SonarQube Scanner)集成
sonarQube安装
- jdk
- 下载
- 解压后目录
drwxr-xr-x 8 sonar root 130 8月 6 10:29 bin
drwxr-xr-x 2 sonar root 48 10月 9 17:09 conf
sonar.properties
-rw-r--r-- 1 sonar root 7651 8月 6 10:20 COPYING
drwxr-xr-x 4 sonar root 43 10月 9 17:11 data
drwxr-xr-x 7 sonar root 141 8月 6 10:29 elasticsearch
drwxr-xr-x 5 sonar root 54 10月 9 17:11 extensions
plugins
drwxr-xr-x 9 sonar root 132 8月 6 10:29 lib
drwxr-xr-x 2 sonar root 4096 10月 10 10:56 logs
sonar.log
web.log
es.log
drwxr-xr-x 9 sonar root 4096 10月 10 16:38 temp
drwxr-xr-x 9 sonar root 4096 8月 6 10:29 web
主要问题:
root用户无法启动elasticsearch问题
mysql连接问题(没有创建空库)
版本太低问题
内存溢出
主机无法分配
java.net.BindException: Cannot assign requested address: bind
排错说明:
可以先跟着sonar.log日志:
如果报了es错误,可以去查看es.log;
如果报了web错误,那么就是查看web.log
- 配置sonar.properties (使用mysql数据库[创建sonar数据库] 和 主机配置)
sonar.jdbc.username=sonar sonar.jdbc.password=sonar sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false sonar.web.host=192.168.120
- 插件 (存放extensions/plugs/下面)
- 汉化插件 https://github.com/SonarQubeCommunity/sonar-l10n-zh
- java语言解析插件(不上传Jenkins中SonarQube Scanner会报错)
- No quality profiles have been found, you probably don't have any language plugin installed.
java语言插件列表
-rw-r--r-- 1 root root 2145122 10月 10 14:09 aemrules-0.9.jar
-rw-r--r-- 1 root root 12623869 10月 10 16:03 checkstyle-sonar-plugin-4.11.jar
-rw-r--r-- 1 root root 9690 10月 10 16:07 guava-helper-sonarqube-plugin-1.0.6.jar
-rw-r--r-- 1 sonar root 92 8月 6 10:20 README.txt
-rw-r--r-- 1 root root 9800486 10月 10 16:07 sonar-findbugs-plugin-3.8.0.jar
-rw-r--r-- 1 root root 9022405 10月 10 16:05 sonar-java-plugin-5.7.0.15470.jar
-rw-r--r-- 1 root root 38307 10月 9 17:12 sonar-l10n-zh-plugin-1.19.jar
-rw-r--r-- 1 root root 4596956 10月 10 16:06 sonar-pmd-plugin-2.6.jar
- 改变所有者
- 创建sonar用户
- 将解压的文件夹里所有的文件(包括自己上传的jar插件)都给sonar用户
- 因为elasticsearch不允许root用户执行
useradd sonar
passwd sonar
chown -R sonar /opt/sonarqube
- 启动
/opt/sonarqube/bin/linux-x86-64/sonar.sh start
console | start | stop | restart | status | dump
- 日志
tail -f /opt/sonarqube/logs/sonar.log
- 防火墙
https://www.cnblogs.com/moxiaoan/p/5683743.html
* 开放
firewall-cmd --zone=public --add-port=9000/tcp --permanent
* 重新载入
firewall-cmd --reload
* firewall-cmd --zone= public --query-port=9000/tcp
- 访问
- http://192.168.1.133:9000/
- 端口和contextPath都在上面配置文件里面
- 管理员 admin admin
- 配置
- 登入成功后
1. 开启scm
2. 获取jenkins登入token
Jenkins集成
- 安裝插件
- 菜单栏 : 系统管理-> 插件管理
- Jenkis 配置 SonarQube Server
- 系统管理 ->系统设置 -> SonarQube servers
- 加入到jenkins项目中
sonar.projectKey=dev-scloud-example
sonar.projectName=scloud-example
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
sonar.sources=./scloud-example-service/src/
sonar.java.binaries=./scloud-example-service/target/classes/
sonar.language=java
问题
- scm没有开启
- SonarQube scanner exited with non-zero code: 1
- 语言插件没有上传
Caused by: No quality profiles have been found, you probably don't have any language plugin installed.
ERROR:
ERROR: Re-run SonarQube Runner using the -X switch to enable full debug logging.
ERROR: SonarQube scanner exited with non-zero code: 1
Notifying upstream projects of job completion
Finished: FAILURE - 插件下载不下来
由于网络原因,应用市场的插件一直下载不了,请在插件的首页找到github中release下的jar,然后上传到sonarQube插件文件夹下面
本地搭建scanner
- 下载scanner或者直接下载jenkins里面的 (/var/lib/jenkins/tools 里面)
2018-10-10 10:15 120 .installedFrom
2018-10-11 17:19 <DIR> bin
2018-10-11 17:19 <DIR> confsonar-scanner.properties
2018-10-11 17:19 <DIR> lib
- 配置环境变量到 bin
检测
sonar-scanner -v
- 修改配置文件sonar-scanner.properties
sonar.host.url=http://192.168.133:9000
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://192.168.1.125:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
- 在项目里面下添加配置sonar-project.properties
sonar.projectKey=dev-example-basic
sonar.projectName=scloud-example
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
sonar.sources=./
sonar.java.binaries=./
sonar.language=java
- 打开cmd , cd到项目下,然后执行 sonar-scanner