SonarQube 集成 GitLabCI

本文是用于分析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: 上一步获取的tokenbash

2.Sonar Scannergitlab


您须要一个sonar scanner来扫描您的代码。根据官方文档,SonarQube Scanner被推荐为使用SonarQube分析项目的默认启动器。下载sonar scanner for msbuilder,.net 跟 .net core 都有对应的版本,ui

这里咱们下载.net 的版本(为什么不使用.net core,.net core 版本执行shell命令涉及到了一些权限问题,暂时没有找到解决方案),解压缩:url

编辑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,不知道有没有什么好的方式,谁能帮我?

相关文章
相关标签/搜索