本文是用於分析SonarQube代碼的質量,每次在GitLab上提交代碼時都使用GitLab-CI運行器進行檢查。java
1.SonarQube with GitLabgit
安裝插件GitLab-plugin for SonarQube,轉到Adminstration-> MarketPlace,搜索「GitLab」,而後單擊安裝,安裝完成後,從新啓動SonarQubegithub
爲SonarQube設置GitLab插件:從GitLab獲取用戶令牌。docker
轉到SonarQube:管理 - >配置 - > GitLab:shell
GitLab url: add your GitLab urlcanvas
GitLab User Token: 上一步獲取的tokenapi
2.Sonar Scannerbash
您須要一個sonar scanner來掃描您的代碼。根據官方文檔,SonarQube Scanner被推薦爲使用SonarQube分析項目的默認啓動器。下載sonar scanner for msbuilder,.net 跟 .net core 都有對應的版本,app
這裏咱們下載.net 的版本(爲什麼不使用.net core,.net core 版本執行shell命令涉及到了一些權限問題,暫時沒有找到解決方案),解壓縮:gitlab
編輯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,不知道有沒有什麼好的方式,誰能幫我?