jenkins與SonarQube集成
一、SonarQube
我的理解是,SonarQube就是一個對代碼進行分析的平臺,其功能可以通過插件擴展。支持多種語言,也支持靜態代碼檢查、發現潛在bug等。
以下是參考信息:
維基百科:https://zh.wikipedia.org/wiki/SonarQube
官網:https://www.sonarqube.org/
文檔:https://docs.sonarqube.org/display/SONAR/Documentation
二、下載安裝
1.下載
訪問官網:https://www.sonarqube.org/
點擊“Download”,
然後我們可以選擇長期支持版本或者最近的穩定版本,
2.安裝運行
該軟件是綠色版,不需要安裝,手動解壓即可。windows或者linux都支持。
解壓後,如果是windows,執行以下路徑的bat(如果是32位操作系統,請切換到bin\windows-x86-32目錄)
運行如下,如果顯示如下圖,表示已成功啟動SonarQube。
3.嘗試使用
訪問:
http://localhost:9000
用戶名/密碼是:admin/admin
接下來可以照著網頁上的提示,完成token生成等,該token用處很大,需要牢記。
針對maven項目,我們可以測試一下。
找到想要測試的項目的根路徑,比如:
在命令行執行:(sonar.login就是上文生成的token值)
mvn sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=429cf9cccb1c1dc96aea29c2f69f74669ed7fdc5
執行結果如下:
根據以下日誌,
[INFO] ANALYSIS SUCCESSFUL, you can browse http://localhost:9000/dashboard/index /com.ceiec:bdmp
我們訪問:http://localhost:9000/dashboard/index/com.ceiec:bdmp,頁面如下:
SonarQube的功能很多,以上只展示了基本功能。
更多功能可以參考官方文檔:
https://docs.sonarqube.org/display/SONAR/Get+Started+in+Two+Minutes
三、與jenkins集成
參考:
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
1.安裝
依次進入,“系統管理”--》“管理插件”--》“可選插件”--》“SonarQube Scanner for Jenkins”,然後點“直接安裝”。安裝完成後,重啟一下。
2.配置SonarQube服務器的地址
依次進入,“系統管理”--》“系統設置”,配置以下部分:
3.配置SonarQube Scanner
依次進入,“系統管理”--》“全局工具配置”,配置以下部分:
我這邊采用了自動安裝,但是,這個“自動安裝”的運行條件是:
當你在job中配置了,要使用該指定名稱“my-jenkins-SonarQube Scanner”的工具(當然,如果不指定,因為沒有默認值,所以會在job配置頁面上報錯,紅字提示),然後在“立即構建”時,才會去下載該工具。
並不是這裏點了自動安裝,點擊保存後,馬上就會下載安裝的。
4.配置job
SonarQube,針對java來說,是基於class來檢測的,所以在這前面,需要配置一個maven的編譯步驟。
如下:
上圖中,要指定給SonarQube Scanner使用的jdk,在Analysis properties中,
“sonar.projectKey”可隨意指定;
“sonar.sources”指定了我的源文件路徑;
“sonar.java.binaries”是編譯後的class文件的路徑。
以下是我的jenkins的該job的工作目錄樹(請讀者參考自己的目錄配置):
5.構建結果
6.異常情形
INFO: ------------------------------------------------------------------------ ERROR: Error during SonarQube Scanner execution ERROR: Error when executing blame for file bdmp-api/pom.xml ERROR: Caused by: svn: E170001: Authentication required for ‘<http://192.168.19.225:80> CollabNet Subversion Repository‘ ERROR: ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging. WARN: Unable to locate ‘report-task.txt‘ in the workspace. Did the SonarScanner succedeed? ERROR: SonarQube scanner exited with non-zero code: 1 Finished: FAILURE
解決方法:
登錄SonarQube,按下圖所示,關閉“從scm獲取blame信息”即可:
jenkins與SonarQube集成