jenkins集成sonarqube

最近工作中已經很少會使用jenkins來構建編譯任務了,因爲已經將大部分項目遷移到gitlab上了,但是不可否認的是 jenkins依然是持續集成工具的最佳選擇.

各種工具其實都各有優缺點,在選用時都需要考慮到學習成本以及使用場景。本文就介紹下jenkins的一種使用場景: 推送sonarqube報告

首先,我們需要知道sonarqube能分析項目代碼,幫助發現項目中潛在的bug,承擔的是一個質量管理的角色.其次,上傳報告一般是需要藉助於sonar-scanner插件來上傳的,但是也有例外,例如java項目可以直接通過maven的soanr插件來上傳代碼.

使用sonarqube的好處就不說了,本文就講講從jenkins推送報告到soanrqube的幾種方式


在之前的文章中說過:jenkins一般是作爲master節點,往往擔任的是分發者的角色,將一些構建任務分發到其他的slave節點中,這種方式符合現在的主流,即master-slave方式. 當然,我們也能在master上運行任務.

一、在jenkins master節點上運行構建任務

這種方式我們可以選擇在jenkins上安裝Sonarqube Scanner插件,也可以選擇在安裝jenkins的機器上裝sonar-scanner插件,這兩者效果一樣,本質上都是通過sonar-scanner插件來上傳報告.

如果是在jenkins上安裝Sonarqube Scanner插件,還需要進行配置,比較麻煩,建議直接在機器上安裝sonar-scanner插件,十分簡單,具體用法可看下面的文檔

二、在jenkins node節點上運行構建任務

這種方式是jenkins master節點將實際的任務分發給node節點,當然需要事先準備好node節點,然後再配置job的時候指定使用該node節點. 還需要在node節點對應的服務器上下載soanr-scanner插件,用法可看下面的文檔

鑑於採用sonar-scanner來上傳sonar報告是最普遍的做法,因此,下面我們介紹下具體的使用實例


上傳sonar報告的例子

1.java項目上傳sonar 報告其實有兩種,一種如下:

mvn clean package sonar:sonar -Dsonar.host.url=xxxx

注意sonar:sonar是會下載一個sonar插件,然後通過該sonar插件去上傳報告到sonarqube上.

另外一種是通過sonar-scanner插件推送

sonar-scanner -Dsonar.host.url=xxxx
-Dsonar.projectKey=Test
-Dsonar.projectName=Test
-Dsonar.projectVersion=1.0
-Dsonar.sources=src
-Dsonar.java.binaries=target/classes

看到這裏,很容易發現sonar-scanner命令的用法和java一樣.這是直接通過命令來運行的. 事實上,sonar-scanner在運行時會讀取當前目錄下的sonar-project.properties文件,所以也可以將這些參數放入該文件中,放入文件中時就不需要再加-D了

2.c++項目上傳sonar報告

直接貼命令:

sonar-scanner
-Dsonar.projectKey=CProject
-Dsonar.projectName=CProject
-Dsonar.projectVersion=1.0
-Dsonar.sources=src
-Dsonar.language=c++

 

這裏就只介紹java項目和c++項目了,具體的用法,大家可以參考官方用法,也比較全面,需要注意的是:使用sonar-scanner時要注意使用的是sonar-scanner自帶的java版本還是系統的java版本,需要將sonarqube的網站證書加入到java的cacerts文件中


本文粗略的介紹瞭如何使用sonar-scanner上傳報告,以及jenkins和sonarqube集成的基本原理。事實上,在真正開始集成它們時,會遇到各種各樣的問題,對於新手來說尤其麻煩.本文也只是提出了一個問題以及對應的解決方案.

介於文章篇幅,因此大家如果在集成過程中遇到問題的話,可一起探討下解決辦法.


微信公衆號: DevOps入門指南

大家關注下微信公衆號!另外,新建了一個微信羣,主要是devops/ci/cd相關的話題討論以及問題解決方案。大家感興趣的話可以加微信:crazy_boy-smile

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章