文章目錄
- 一、最低配置要求
- 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 中文插件專欄
上面示範的是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失敗
6.3. node validation exception