.net持續集成sonarqube篇之 sonarqube與jenkins集成(插件模式)

系列目錄html

Jenkins經過插件集成Sonarqube

經過上一節咱們瞭解瞭如何配置以使jenkins ci環境中能夠執行sonarqube構建,其實Sonarqube官方也提供了jenkins插件以便更方便的管理.使用插件來執行sonarqube項目有如下優勢web

1.能夠很清楚的看到項目是Sonarqube項目,以下圖示

avatar

Sonarqube的begin,end不須要手動寫,而是自動選擇,項目名稱,項目版本一目瞭然.不須要查看cmd信息.有點流水線的感受.安全

2.更好地與Sonarqube集成,請看下圖

avatar

咱們能夠看到使用Sonarqube插件的項目是這樣的,可以在jenkins頁面展現項目的狀態和sonarqube服務端的處理狀態,咱們點擊圖中的與sonarqube相關的圖標會自動進入Sonarqube web管理頁面,而且自動定位到本項目,這樣若是構建項目特別多的狀況下給咱們帶來不少方便.服務器

3.與Jenkins PipeLine集成

以上僅僅是方便之處,然而並無顯示出插件無可取代之處,它的無可取代之處在於使用jenkins PipeLine時必須使用此插件.ssh

說了這麼多,下面介紹如何安裝配置sonarqube Jenkins插件.分佈式

進入Jenkins插件管理界面,切換到'available'界面,輸入sonarQube Scanner而後安裝(關於jenkins插件安裝前面章節有講到,這裏再也不贅述).安裝完成之後開始配置.工具

工具選項配置

進入Manage Jenkins>Global Tool Configuration單元測試

找到sonarqube for msbuild配置以下測試

avatar
其中名稱能夠隨便選擇,只要方便管理便可.ui

再找到sonarqube scanner,配置以下

avatar
配置完成後點擊最下面的save保存

點擊完保存以後,咱們再進入config system找到sonarqube servers配置以下

avatar

serverurl要根據實際狀況配置,若是sonarqube和jenkins並不在同一臺機器,則須要配置ip地址.

下面咱們新建一個自由式任務.名稱爲mysonar(名稱隨意)
進入到Build欄目,點擊Add Build Steps,咱們歷來拉列表中選擇Sonarqube開始標識(經過前面的章節咱們瞭解到,sonarqube構建包括開始標記,結束標記,而後中間是msbuild構建)

avatar

點擊後會出現如下配置項,按實際狀況配置便可

avatar
指定項目名,key(key能夠任意起名,只作爲唯一標識,並非ssh登錄相似的key)

而後再新建一個執行bat的步驟.以下圖

avatar

這裏很普通,指定一個要編譯的項目,須要注意的是我這裏有環境變量msbuild,若是找不到請添加環境變量或者指定msbuild完整路徑.

而後再添加一個步驟,此次選擇SonarScanner for msbuild -end analysis.

而後點擊肯定完成建立,咱們點擊build now觸發一次構建.

構建成功後信息以下圖

avatar
咱們點擊紅色框先的任意一項,就能夠跳轉到sonarqube web管理界面,以下圖示

avatar

須要注意的是第一次運行並不能構建成功,這是由於Jenkins須要下載相關插件,插件下載成功後咱們進入Jenkins\tools\hudson.plugins.sonar.MsBuildSQRunnerInstallation目錄下的你的 SonarScanner for MSBuild的名字,它就是你在Global Tool Configuration>SonarScanner for MSBuild指定的名稱,進去之後找到SonarQube.Analysis.xml對它進行配置,關於此文件的配置前面咱們講到過,這裏再也不贅述.

Sonarqube插件集成單元測試覆蓋報告

回憶前面章節,添加sonarqube單元測試覆蓋率報告須要額外執行一步運行單元測試的代碼,這並非重點,重點在於如何在Begin Analysis部分指定單元測試執行文件,這裏經過指定Additional arguments來實現,以下圖示

avatar

而後再在msbuild構建完成後添加一步執行單元測試的代碼(能夠複製前面的代碼)就好了,這裏須要說明的是前面爲了方便講解咱們是在項目目錄下執行腳本,使用了%CD%這樣的相對路徑,Jenkins中建議換成絕對路徑,以防出現沒必要要的麻煩.

完了再進入Sonarqube web管理界面,就能夠看到有單元測試覆蓋率報告了

avatar

Token方式與Sonarqube server交互

上一節咱們講解了經過配置SonarQube.Analysis.xml方式實現與Sonarqube server交互(實際上咱們執行構建的時候sonarqube runner是經過http方式把數據提交到sonarqube server),這樣作有很是明顯的缺點.第一是安全問題,咱們知道其實咱們是把admin的用戶名和密碼寫入了SonarQube.Analysis.xml文件裏,這樣很容易暴露管理員帳戶,在企業生產環境中,若是有惡意的人獲取了管理員帳戶,則能夠進行任意構建,而後觸發布,這樣會形成很是嚴重的後果,即便被沒有惡意的開發者獲取到,開發者可能出於好奇心在生產環境中進行測試嘗試,這樣也可能會形成很是嚴重的後果.第二是管理很不方便,若是在生產環境的jenkins是分佈式的,那麼咱們進入每一臺服務器更改配置文件是很不方便的,若是管理員帳戶和密碼更改了還要進入每臺服務器更改,雖然如今有各類自動化的工具使得這種操做不是特別麻煩的問題,可是集中的配置更加方便維護.下面咱們講解如何經過在Jenkins中爲Sonarqube server添加token來解決以上兩個問題.

在Sonarqube裏生成token

首先須要說明的是,只有管理員帳戶能夠生成token,其它帳戶不可進行此操做.咱們進入sonarqube web管理界面,執行如下操做

avatar

進入個人帳戶後security標籤,能夠看到以下界面

avatar

咱們在紅框內的文本框裏輸入key的名字,此時Generate按鈕變爲激活狀態,咱們點擊一下就能夠生成一個token

avatar

咱們點擊copy或者直接複製把token存儲到文本文檔或者其它地方,須要注意的是token必須保存,退出這個頁面後token的值就會消失(這裏說的消失是指再也不顯示,而不是真正的消失).

把生成的token添加到Jenkins裏

咱們再回到jenkins,進入Manage Jenkins>configure system找到SonarQube servers把token粘貼到Server authentication token

avatar

須要注意的時,若是已經在SonarQube.Analysis.xml配置了帳號密碼,則須要刪除掉,即刪除如下代碼

<Property Name="sonar.login">admin</Property>
<Property Name="sonar.password">admin</Property>
相關文章
相關標籤/搜索