使用 Sonar+Epona+Gitlab+dingding 搭建代码静态检查系统

Posted Data-Mining

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Sonar+Epona+Gitlab+dingding 搭建代码静态检查系统相关的知识,希望对你有一定的参考价值。

目录

前言

正文

一、准备工作

二、操作步骤

三、模块关系图谱

四、工具


前言

随着研发团队的日益壮大,代码质量管理变得越来越有必要。本文只是介绍一种代码静态检测系统搭建的建议和思路,大家也可以理解成是一种设计方案。

正文

一、准备工作

1. 拥有(新建)一个gitlab的代码仓库。

2. 项目具备管理员权限,普通开发者角色(developer)没有配置权限。

【如果你没有如下图所示的“设置”选项,就不用瞎折腾了。我就因为没有这个选项,自己瞎鼓捣了好久,而相关负责的同学还在瞎指挥,我从一开始就怀疑是不是自己缺少权限,太悲哀了。】

3.拥有sonar和epona的账号。

二、操作步骤

1. 在 Sonar 中创建项目,定义并填写项目的名称(display name)和 Project Key,注意:你可以不记得项目名称,但是一定要记得Project Key,具体如下图所示:

2. 在钉钉中建立代码静态检测结果通知群组(一般至少要拉三个人才能建群),建好群后添加机器人,群组设置-职能群助手-机器人管理-添加机器人,如下图所示:

然后,选择“自定义”选项,图标如下图所示:

填写机器人名称,同时勾选“加签”,具体操作如下图所示:

注意:勾选“加签”时,一定要记得保存密钥,之后就“消失”了。点击“完成”按钮后,会出现钉钉hook的通知地址,也记得保存下来。

3. 在 epona 中创建钉钉机器人,具体操作和注意事项如下图所示:

4. 在gitlab项目中添加CICD变量,其中,BOT_ALIAS 和钉钉机器人的唯一标识保持一致,PROJECT_KEY 和sonar中定义的项目 Project Key 保持一致,具体如下图所示:

5. 填写 .gitlab-ci.yml 配置文件,可以参考下面的示例内容:

stages:
  - code_quality
  - code_report

SONAR 分析:
  tags:
    - docker
  stage: code_quality
  image: harbor.***.com/sonar-scanner/sonar-scanner-cli:latest
  variables:
    SONAR_USER_HOME: "$CI_PROJECT_DIR/.sonar"  # Defines the location of the analysis task cache
    GIT_DEPTH: "0"  # Tells git to fetch all the branches of the project, required by the analysis task
  cache:
    key: "$CI_JOB_NAME"
    paths:
      - .sonar/cache
  script:
    - sonar-scanner
      -Dsonar.verbose=false
      -Dsonar.projectKey=electron
      -Dsonar.projectName=electron
      -Dsonar.projectVersion=lozen/test
      -Dsonar.sources=.
      -Dsonar.qualitygate.wait=true
      #-Dsonar.exclusions=src/third_party/**/*,src/build/**/*,src/buildtools/**/*,src/tools/**/*,src/test/**/*,src/testing/**/*
      #-Dsonar.test.exclusions=src/test/**/*,src/testing/**/*
  allow_failure: true
  only:
    - lozen/test
    - dev
    - release
    - master
 
SONAR 报告:
  tags:
    - docker
  stage: code_report
  image: $DOCKER_REGISTRY/cicd/sonarnotify:latest
  script:
    - sonarnotify
  only:
    - lozen/test
    - dev
    - release
    - master

三、模块关系图谱

整个系统包括四个大的模块,其中,模块之间的关系图谱如下图所示。这个系统的工作原理就是研发人员提交新的代码到Gitlab仓库后,Gitlab仓库会把代码push到Sonar代码静态检测模块,然后由Sonar完成检测后,回调通知检测结果给钉钉机器人,钉钉机器人再把结果展示在钉钉群组里。

四、工具

整体系统搭建肯定不是从0开始的,肯定会依赖很多开源的工具方案,主要工具如下:

1. SonarQube - Code Quality and Code Security

网址:Code Quality and Code Security | SonarQube

2. sonar-scanner-cli - Run code analysis on SonarQube

网址:GitHub - SonarSource/sonar-scanner-cli-docker: Docker image for SonarScanner CLI

3.  sonarqube-community-branch-plugin - A plugin for SonarQube to allow branch analysis

网址:GitHub - mc1arke/sonarqube-community-branch-plugin: A plugin that allows branch analysis and pull request decoration in the Community version of Sonarqube

作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解。同时也是 CSDN 博客专家(博客之星)、华为云享专家(共创编辑、十佳博主)、51CTO社区编辑、InfoQ 签约作者,欢迎关注我分享更多干货!😄 

以上是关于使用 Sonar+Epona+Gitlab+dingding 搭建代码静态检查系统的主要内容,如果未能解决你的问题,请参考以下文章

使用 Sonar+Epona+Gitlab+dingding 搭建代码静态检查系统

devops===》Jenkins(pipeline)+gitlab+sonar代码扫描漏洞扫描

devops===》Jenkins(pipeline)+gitlab+sonar代码扫描漏洞扫描

如何将 Sonar Quality Gates 与 Gitlab-CI 集成

配置sonarqube与gitlab sso认证集成

Sonarqube gitlab 报告发布者未完成