Jenkins集成SonarQube代碼審查自動化

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地址中登陸訪問進行查看代碼掃描情況

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容