文章目录
- 一、最低配置要求
- 1. JDK版本要求
- 2. 数据库版本要求
- 3. 支持浏览器版本
- 二、软件下载安装
- 2.1. 软件列表总览
- 2.2. jdk11下载
- 2.3. sonarqube下载
- 2.4. sonar-scanner-cli
- 2.5. Oracle 驱动
- 三、安装实战
- 3.1. JDK sonar-scanner
- 3.2. sonarqube
- 3.3. oracle驱动
- 3.4. 启动sonar
- 3.4. 登录验证
- 3.5. Sonarqube 中文插件专栏
- 四、 集成oracle数据库
- 4.1. 创建命名空间
- 4.2. 创建sonarqube用户及赋予权限
- 4.3. 配置数据库信息
- 4.3. 重新启动
- 4.4. 浏览器验证
- 4.5. 数据库验证
- 五、企业扫描实战
- 六、异常汇总及技巧
- 6.1. 操作技巧
- 6.2. root启动sonarqube失败
- 6.3. node validation exception
使用sonarqube8.3 搭建企业级代码质量管控平台
一、最低配置要求
1. JDK版本要求
https://docs.sonarqube.org/latest/requirements/requirements/
sonarqube8.3 :JDK版本11及以上,支持 Oracle版本有(19C
18C 12C 11G)
2. 数据库版本要求
Oracle案例:
支持数据库 | 版本 | 编码要求 |
---|---|---|
Oracle | 19C | |
18C | ||
12C | ||
11G | ||
Must be configured to use a UTF8-family charset (see NLS_CHARACTERSET) | 必须编码为UTF-8 |
支持数据库 | 版本 | 编码要求 |
---|---|---|
PostgreSQL | 12 | |
11 | ||
10 | ||
9.3–9.6 | ||
Must be configured to use UTF-8 charset | 必须编码为UTF-8 |
还支持Microsoft SQL Server,官网声明高版本SonarQube暂不适配Mysql数据库,建议自己可以尝试一下mysql数据库是否支持。
参考链接:
Sonarqube Mysql
3. 支持浏览器版本
浏览器 | 版本 |
---|---|
Microsoft Internet Explorer | IE 11 |
Microsoft Edge | Latest |
Mozilla Firefox | Latest |
Google Chrome | Latest |
Safari | Latest |
二、软件下载安装
2.1. 软件列表总览
2.2. jdk11下载
官网地址:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
注:如果不能下载,注册一个账户即可
2.3. sonarqube下载
sonarqube官网
https://www.sonarqube.org/downloads/
默认下载最新版
附上历史版本下载说明:
注:建议优先下载最新版本
2.4. sonar-scanner-cli
sonar-scanner-cli
https://binaries.sonarsource.com/Distribution/sonar-scanner-cli
2.5. Oracle 驱动
ojdbc8-12.2.0.1
地址:明天再补充下载链接
三、安装实战
3.1. JDK sonar-scanner
#解压jdk、sonar-scanner
tar -zxvf jdk-11.0.7_linux-x64_bin.tar.gz -C /app/
unzip sonar-scanner-cli-4.3.0.2102-linux.zip#配置环境变量
vim /etc/profile
添加内容如下:#java environment
export JAVA_HOME=/app/jdk-11.0.7
#配置sonar-scanner
export SONAR_RUNNER_HOME=/app/sonar-scanner-4.3.0
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin:$SONAR_RUNNER_HOME/bin#刷新环境变量
source /etc/profile
3.2. sonarqube
#解压sonarqube
unzip sonarqube-8.3.1.34397.zip#创建sonar用户并设置密码
useradd sonar
passwd sonar
123456
123456#赋予sonar用户目录权限
chown sonar.sonar /app/sonarqube-8.3.1 -R
注:创建sonar用户的原因是,启动sonarqube内部会启动elasticsearch,而elasticsearch不允许root用户启动,因此,启动sonarqube需要单独创建sonar用户来操作,只要不是root用户即可。
3.3. oracle驱动
复制到指定路径下面即可
cp ojdbc8-12.2.0.1.jar /app/sonarqube-8.3.1/extensions/jdbc-driver/oracle/
3.4. 启动sonar
#切换至sonar用户
su - sonar#进入执行脚本目录
cd /app/sonarqube-8.3.1/bin/linux-x86-64/
#启动sonar
./sonar.sh start
#查看sonar运行状态
./sonar.sh status
#监控sonar启动日志(日志会有好几个,重要的3个,先后生成依次是:sonar.log->es.log->web.log)
tail -f /app/sonarqube-8.3.1/logs/web.log
3.4. 登录验证
http://192.168.0.104:9000
账号:admin
密码:admin
3.5. Sonarqube 中文插件专栏
https://blog.csdn.net/weixin_40816738/article/details/106582827
上面演示的是7.8版本,如果是8.3版本操作一样,第一种就是你在线安装,第二种就是去Github把对应版本的中文插件下载到本地,在托到指定目录即可。
例如:
在线安装插件演示图例:
单独下载插件演示:
/app/sonarqube-8.3.1/extensions/plugins
四、 集成oracle数据库
4.1. 创建命名空间
如果是docker安装的oracle请参考下面例子
--创建明明空间 sonarqube
CREATE TABLESPACE sonarqube
DATAFILE '/home/oracle/app/oracle/oradata/helowin/sonarqube.dbf' SIZE 2018M
AUTOEXTEND ON NEXT 1024M MAXSIZE 20480M;
如果是不使用docker安装的oracle
CREATE TABLESPACE sonarqube
DATAFILE '/u01/oracle/oradata/sonar/sonarqube.dbf' SIZE 2018M
AUTOEXTEND ON NEXT 1024M MAXSIZE 20480M;
注:参数中命名空间、大小均自定义
4.2. 创建sonarqube用户及赋予权限
--创建sonarqube 用户,密码是sonarqube
CREATE USER sonarqube IDENTIFIED BY sonarqube;
--给用户赋予权限
GRANT CONNECT, RESOURCE ,DBA TO sonarqube;
4.3. 配置数据库信息
cd /app/sonarqube-8.3.1/conf
vim sonar.properties#添加数据库信息
sonar.jdbc.username=sonarqube
sonar.jdbc.password=sonarqube
sonar.jdbc.url=jdbc:oracle:thin:@192.168.0.104:1521/helowin
sonar.sorceEncoding=utf-8注:端口1521、服务名helowin、编码utf-8、用户名、密码
4.3. 重新启动
#切换sonar用户
su - sonar
#进入执行脚本目录
cd /app/sonarqube-8.3.1/bin/linux-x86-64/
#启动soanr
./sonar.sh start
#监控sonar启动日志轨迹,便于快速定位和分析问题(建议大家养成这样的习惯)
tail -f /app/sonarqube-8.3.1/logs/web.log
4.4. 浏览器验证
4.5. 数据库验证
五、企业扫描实战
1.创建一个扫描用户的家目录,用来存放项目代码和配置文件的目录
2.在此目录下面配置:一个配置文件一个执行扫描脚本一个存放代码目录
sonar-project.properties
# 项目key 用于标识项目唯一性
sonar.projectKey=fis
# 项目名称
sonar.projectName=fis
# 项目扫描的默认版本
sonar.projectVersion=1.0
# 扫描项目的目录
sonar.java.binaries=fis
# web账号
sonar.login=admin
# web 密码
sonar.password=admin
# 扫描项目的源码目录
sonar.sources=fis
# 扫描项目的编码设置
#sonar.sourceEncoding=UTF-8
sonar.sourceEncoding=GBK
执行扫描脚本sonar-scanner.sh
sonar-scanner
赋予扫描脚本可执行那个权限
chmod +x sonar-scanner.sh
说明一下脚本执行原理:一般在/app/sonar-scanner-4.3.0/conf
目录下面配置项目信息
进入/app/sonar-scanner-4.3.0/bin
目录执行sonar-scanner脚本即可,
上面场景,只有一个项目是可以的,但是如果有几百个用户,那对应几百个项目,怎么办的,为每一个用户创建一个扫描目录,在目录下面配置项目信息和执行脚本加上扫描目录即可实现。
六、异常汇总及技巧
6.1. 操作技巧
在启动项目之前,打开2个窗口,一个是启动sonar的窗口,另一个是生成日志的窗口,这样想做的好处就是,可以监控项目从启动到启动的成功以及操作页面触发执行的操作,在日志中可以实时的监控;发生异常信息,也可以快速的定位和分析,从而提高解决问题的效率。
有时候不会生成web.log如果遇到,说明启动sonarqube失败,根据启动日志,分析日志的关键性信息,定位导致异常发生的原因。
6.2. root启动sonarqube失败
在操作8.3版本中遇到了3个问题,
问题1:使用root启动sonarqube失败,可以根据/app/sonarqube-8.3.1/logs/es.log
日志可知。
解决方案:
1.创建用户
2.清空 /app/sonarqube-8.3.1/data 、/app/sonarqube-8.3.1/temp、/app/sonarqube-8.3.1/ logs目录下生成的目录以及文件
3.切换到新创建的用户重新启动sonar服务即可
6.3. node validation exception
这个异常具体处理请参考:node validation exception 的问题处理