天天看點

SonarQube 內建 GitLabCI

本文是用于分析SonarQube代碼的品質,每次在GitLab上送出代碼時都使用GitLab-CI運作器進行檢查。

1.SonarQube with GitLab

安裝插件GitLab-plugin for SonarQube,轉到Adminstration-> MarketPlace,搜尋“GitLab”,然後單擊安裝,安裝完成後,重新啟動SonarQube

為SonarQube設定GitLab插件:從GitLab擷取使用者令牌。

轉到SonarQube:管理 - >配置 - > GitLab:

GitLab url: add your GitLab url

GitLab User Token: 上一步擷取的token

2.Sonar Scanner

您需要一個sonar scanner來掃描您的代碼。根據官方文檔,SonarQube Scanner被推薦為使用SonarQube分析項目的預設啟動器。下載下傳sonar scanner for msbuilder,.net 跟 .net core 都有對應的版本,

這裡我們下載下傳.net 的版本(為何不使用.net core,.net core 版本執行shell指令涉及到了一些權限問題,暫時沒有找到解決方案),解壓縮:

編輯SonarQube.Analysis.xml,修改sonar平台位址,以及使用者名密碼:      

GitLab-CI Runner

我們需要GitLab-CI Runner來幫助我們運作作業并将結果發送回GitLab。       
a.在系統中的某個位置建立一個檔案夾,例如:C:\ GitLab-Runner。       
b.下載下傳x86或amd64的二進制檔案并将其放入建立的檔案夾中。将二進制檔案重命名為gitlab-runner.exe,如下是gitlab runner檔案夾      

 c.運作管理者指令提示符。

 d.通過cmd:“gitlab-runner.exe register”注冊Runner,輸入它一步一步詢問的資訊。 

    d1. GitLab Url  

    d2. 令牌:在CI / CD設定頁面中獲得的。

d3.描述:跑步者的描述       
d4.标簽:與Runner相關聯的标簽,可以稍後在GitLab的UI中進行更改。       
d5.Runner執行者:eg.shell,docker等。       
e.将Runner作為服務安裝并啟動它。 (使用内置系統或使用者帳戶運作服務)      
e1. cmd:gitlab-runner install       
e2. cmd:gitlab-runner start      

f. 編寫.gitlab-ci.yml并将其放在GitLab上的根目錄下,當存儲庫發生任何更改時,它将運作這個腳本。

stages:

- publish

Sonar_Publish:

stage: publish

script:

- chcp 

65001

- dotNetSonarDemo\sonar_runner.bat

only:

- master

編寫bat腳本檔案:

@ECHO off

CALL :build

GOTO:eof

:build

FOR  

/r

%%L IN (*.sln) DO (

echo

Doing  %%L ...........

call 

"d:\sonarms\MSBuild.SonarQube.Runner.exe"

begin 

/k

:

"%%~nL"

/v

:

"1.0"

/d

:sonar.analysis.mode=publish 

/d

:sonar.gitlab.commit_sha=%CI_COMMIT_SHA% 

/d

:sonar.gitlab.project_id=%CI_PROJECT_ID% 

/d

:sonar.gitlab.ref_name=%CI_COMMIT_REF_NAME% 

/d

:sonar.cs.opencover.reportsPaths=

"%%~pL%%~nLTest\projectCoverageReport.xml"

call 

"E:\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe"

%%L

call 

"d:\sonarms\MSBuild.SonarQube.Runner.exe"

end

)

修改本地代碼并推送,檢視gitlab自動建構資訊如下:

job執行成功,sonar平台上也能檢視到掃描記錄:

分割線------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

sonar 內建gitlab 掃描.net core 出現的問題:

running the scanner for msbuild under local system or network service account is not supported

好多老外也遇到了這個問題:https://github.com/SonarSource/sonar-scanner-msbuild/issues/522,不知道有沒有什麼好的方式,誰能幫我?