Jenkins集成**SonarQube詳細安裝及配置**
\1. 環(huán)境
<1>.前置條件:jdk1.8,mysql >=5.6 && <8.0
<2>.系統(tǒng):centos7.2-x86_64
<3>.軟件下載目錄:/home/sonar/
<4>.軟件安裝目錄:/home/sonar/
<5>.Sonarqube版本:SonarQube7.6(最新版本不支持mysql,但支持oracle、postgreSQL9.3、6.SQLServer2014/2016/2017,綜合考量后,決定用SonarQube7.6)
<6>.sonarqube下載地址:https://www.sonarqube.org/downloads/(拉下頁面最底部有個Historical Downloads可選擇版本進行下載)
<7>.Sonar-scanner下載掃描器地址:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
\2. 安裝環(huán)境
<1>安裝mysql數(shù)據(jù)庫,需要記住安裝時Mysql數(shù)據(jù)庫的的賬號密碼;
<2>安裝好相關的Mysql后,需要在數(shù)據(jù)庫中創(chuàng)建一個數(shù)據(jù)庫,命名為sonar(因已有同事安裝好mysql,只需要建庫就可以):
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
<3>創(chuàng)建一個sonar用戶,設置用戶名賬號密碼為sonar:
CREATE USER 'sonar' IDENTIFIED BY 'sonar';
<4>把已創(chuàng)建的數(shù)據(jù)庫sonar的所有權(quán)限賦予給sonar用戶:
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;
<5>安裝SonarQube
第一步:將下載的sonarqube-7.6.zip進行解壓
unzip? sonarqube-6.7.5.zip? 解壓包
? 第二部:配置環(huán)境變量


? ? 第三步:配置sonar.properties

打開屬性文件后,找到mysql配置處,加入如下圈紅代碼

代碼解析:
第一行sonar.jdbc.url: 鏈接myslq數(shù)據(jù)庫地址,數(shù)據(jù)庫名。sonar問號后面是格式相關;
第二/三行: mysql的賬號/密碼;
第四行: 支持的編碼格式;
第五/六行: sonar登錄時的賬號密碼;默認就是admin
6.啟動SonarQube (重點,這塊有點坑了)
SonarQube 啟動不能用root啟動,所以新建一個用戶。必須先啟動elasticsearch,才能再啟動sonar。sonar文件目錄里面有elasticsearch這個目錄。
啟動的時候會報錯,這里面有報錯的資料。
https://blog.csdn.net/u012448904/article/details/81624037
[root@jenkins /]# useradd sonar
[root@jenkins /]# chown -R sonar:sonar sonarqube-7.6
[root@jenkins /]# chmod 777 -R sonarqube-7.6
[root@jenkins /]# vi sonarqube-7.6/elasticsearch/config/elasticsearch.yml
//開啟端口和指定服務
Network.host:192.168.0.1
http.prot:9200
進行用戶切換,進行啟動sonar



使用sonarqube 地址進行登錄,出現(xiàn)如下界面,Sonarqube啟動成功

\7. 安裝sonar-scanner和配置
第一步:將下載的sonar-scanner-cli-4.2.0.1873-linux.zip進行解壓后移動到/usr/local目錄下并重命名為“sonar-scanner”
unzip? sonar-scanner-cli-4.2.0.1873-
linux.zip? 解壓包
第二步:配置環(huán)境變量



? 第三步:source /etc/profile 保存編輯內(nèi)容

? 第四步:編輯vi sonar-scanner.properties文件,加入如下代碼,并保存,相關數(shù)據(jù)庫url帳號密碼請根據(jù)系統(tǒng)本身情況填寫


第五步:進入項目根目錄下,添加sonar-project.properties文件,參數(shù)如下:
//與項目名稱一樣即可(必填項)
Sonar.projectKey=demo
//與項目名稱一樣即可(必填項)
Sonar.projectName=demo
需要分析的源碼目錄,相對路徑(必填項)
Sonar.sources=src/main
//編譯后的classes目錄,相對路徑(必填項)
Sonar.jva.binaries-build/calsses
Sonar.sourceEncoding=UTF-8
啟動掃描項目:sonar-scanner,并有如下字樣表明掃描啟動成功

打開http://localhost:9000/,能看到主頁出現(xiàn)了分析項目的概要圖

\8. Jenkins集成Sonarr插件
<1>.在Jenkins中下載sonar插件,目前插件為 SonarQube Scanner for Jenkins

<2>.插件安裝完成后,在 系統(tǒng)管理->系統(tǒng)設置中,找到SonarQube servers模塊,填寫服務器信息:

其中認證token需要登陸sonarqube后,點擊Administrator->security->user,點擊token按鈕,輸入key后再點擊generate進行生成,再把生成的generate內(nèi)容復制,填入jenkins添加憑據(jù)。

<3>.在系統(tǒng)設置-全局工具配置中,找到SonarQube Scanner模塊,填寫相關信息:
\9. 在jenkins中新建一個自由風格項目

<1>.源碼管理這里選擇svn或者git都可以,我這里是選擇的svn

<2>.執(zhí)行代碼分析,新增一個構(gòu)建步驟,選擇Execute SonarQube Scanner

<3>.在Analysis properties處,輸入sonarqube的檢查參數(shù)

參數(shù)說明:
#項目key (與項目名稱一樣即可,必填項)
sonar.projectKey=
#項目名稱和版本(必填項)
sonar.projectName=
sonar.projectVersion=1.0
#源碼位置(必填項,相對于jenkins的workspace路徑,相對路徑)
sonar.sources=/opt/data/jenkins/workspace/..../..../src/main/java/
#編譯后的class位置(必填項,相對路徑同上)
sonar.java.binaries=/opt/data/jenkins/workspace/..../..../build/classes
配置完成后,點擊構(gòu)建。構(gòu)建成功后即可在sonar地址中登陸訪問進行查看代碼掃描情況
\10. 在jenkins中新建一個流水線任務(Pipeline)
<1>.在流水線模塊處,編輯Pipeline script:
Sonar.project.properties文件參數(shù)可以在腳本中直接加入,也可以放在項目根目錄下,進行調(diào)用
-Dsonar.projectKey=${projectKey} -Dsonar.projectName=${projectName} -Dsonar.projectVersion=${projectVersion} -Dsonar.sourceEncoding=UTF-8 -Dsonar.sources=${sources} -Dsonar.java.binaries=${binaries}
<2>.配置完成后,點擊構(gòu)建。構(gòu)建成功后即可在sonar地址中登陸訪問進行查看代碼掃描情況