本文是用于分析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,不知道有没有什么好的方式,谁能帮我?

 

SonarQube 集成 GitLabCI的更多相关文章

  1. jenkins与SonarQube集成

    一.SonarQube 我的理解是,SonarQube就是一个对代码进行分析的平台,其功能可以通过插件扩展.支持多种语言,也支持静态代码检查.发现潜在bug等. 以下是参考信息: 维基百科:https ...

  2. 【转+整理】jenkins与SonarQube集成

    一.SonarQube 我的理解是,SonarQube就是一个对代码进行分析的平台,其功能可以通过插件扩展.支持多种语言,也支持静态代码检查.发现潜在bug等. 以下是参考信息: 维基百科:https ...

  3. .net持续集成sonarqube篇之 sonarqube集成单元测试

    系列目录 通过前面章节我们可以看到,不论怎么构建,单元测试覆盖率一栏总是0% 这是因为单元测试覆盖率报告需要额外集成.这一节我们就讲解如何在sonarqube里集成单元测试覆盖率报告. 这里需要借助O ...

  4. SonarQube集成Gitlab

    SonarQube配置gitlab Gitlab创建访问Token 拷贝此Token至Sonarqube进行配置 检查配置配置成功 可以看到权限内的项目

  5. .net持续集成sonarqube篇之 sonarqube与jenkins集成(插件模式)

    系列目录 Jenkins通过插件集成Sonarqube 通过上一节我们了解了如何配置以使jenkins ci环境中可以执行sonarqube构建,其实Sonarqube官方也提供了jenkins插件以 ...

  6. DevOps之持续集成SonarQube代码质量扫描

    一.SonarQube介绍       SonarQube是一个用于代码质量检测管理的开放平台,可以集成不同的检测工具,代码分析工具,以及持续集成工具.SonarQube 并不是简单地把不同的代码检查 ...

  7. SonarQube+Jenkins,搭建持续交付平台

    前言 Kurt Bittner曾说过,如果敏捷仅仅只是开始,那持续交付就是头条! "If Agile Was the Opening Act, Continuous Delivery is ...

  8. Jenkins+sonar7.3集成

    Jenkins安装请参考:https://blog.csdn.net/CheNorton/article/details/50327825?utm_source=copy Jenkins更新请参考:h ...

  9. Tomcat+Jenkins+SonarQube+SVN+Maven 集成自动化环境搭建(Windows10环境下)

    说在前面的话: 从接到任务到完成共用了7天的时间.正常人用不到这个时间. 此时的功能表现是: 登录本地JenKins对项目进行构建,能够自动从SVN读取最新代码并按照Maven项目构建,构建完成能够自 ...

随机推荐

  1. Siamese Neural Networks for One-shot Image Recognition

    one-shot learning简介 这是迁移学习的两种极端形式 zero-shot learning 指的是我们之前没有这个类别的训练样本,但是我们可以学习到一个映射X->Y, 如果这个映射 ...

  2. centos7制作本地yum源

    创建想要挂载的路径 mkdir /mnt/cdrom 挂载本地镜像到创建的目录 mount -t iso9660 /dev/cdrom /mnt/cdrom/ mount: /dev/sr0 is w ...

  3. C#应用NPOI实现导出EXcel表格中插入饼状图(可实现动态数据生成)

    一.思路:   1.excel是可以通过NPOI插入图片的: 2.C#通过NPOI生成饼状图: 3.把生成的饼状图以字节流的形式插入到表格 二.看代码: #region 生成饼图图例 /// < ...

  4. Linux---一级/二级目录以及位置目录名/指令

    home目录:普通用户登录进来以后的初始位置(会在home目录下创建一个登录名相同的目录例如  / home / 用户名),如果是超级用户则就是 在根目录 /下的 root目录(也就是 /root) ...

  5. Goldwave-5.7[逆向流程+算法分析]

    目标程序:Goldwave 5.7 分析工具: 1.OllyDbg 2.IDAPro 目的:用C语言写Goldwave-5.7的注册机. 0x0思路: 1.注册机准备: 功能:输入用户名后经过计算输出 ...

  6. oracle执行计划走偏处理步骤

    -- sql执行时间select a.EXECUTIONS,a.ELAPSED_TIME,a.ELAPSED_TIME/a.EXECUTIONS/1000/1000 as 秒,a.SQL_ID,a.H ...

  7. 【慕课网实战】六、以慕课网日志分析为例 进入大数据 Spark SQL 的世界

    DataFrame它不是Spark SQL提出的,而是早起在R.Pandas语言就已经有了的.   A Dataset is a distributed collection of data:分布式的 ...

  8. [swarthmore cs75] inlab1 — Tiny Compiler

    课程回顾 Swarthmore学院16年开的编译系统课,总共10次大作业.本随笔记录了inlab1的实践过程. tiny compiler 这个迷你的编译器可以将一个源文件,编译成可执行的二进制代码. ...

  9. djangoの2

    古鸽或百度的镜子:   1、E:\django下建个文件夹名为搜索引擎→PyCharm新建项目选Django→location改为E:\django\搜索引擎→More Settings的Applic ...

  10. [转] KVM scalability and consolidation ratio: cache none vs cache writeback

    http://www.ilsistemista.net/index.php/virtualization/43-kvm-scalability-and-consolidation-ratio-cach ...