SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误。

docker安装

1、拉取 postgres:docker pull postgres:10

2、拉取sonarqube:docker pull sonarqube:7.9.1-community

3、启动postgres:docker run -d -p 5431:5432 -e POSTGRES_PASSWORD=1 --name postgres postgres:10

4、进入postgres创建数据库sonar

5、启动sonarqube:docker run -d -p 1022:22 -p 9000:9000 -e "SONARQUBE_JDBC_URL=jdbc:postgresql://192.168.6.16:5431/sonar" -e "SONARQUBE_JDBC_USERNAME=postgres" -e "SONARQUBE_JDBC_PASSWORD=1" --name sonarqube sonarqube:7.9.1-community

sonarqube使用

1、sonarqube安装简体中文包:

依次点击页面:Administration – Marketplcae – All – Chinese Pack(Install)

当安装状态变为Install Pending时,点击最上边的Rastart按钮

2、创建一个普通用户用于做代码质量检测

3、生成令牌:testing_sonarqube

gitlac-ci集成SonarQube

Sonar GitLab Plugin 安装

在 SonarQube 上安装该插件安装方式很简单。

方式一:可以直接下载 https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases该插件,放到 <sonarqube_install_dir>/extensions/plugins 目录,重启 SonarQube 即可。

方式二:admin 登录 SonarQube,点击 配置 —> 系统 —> 更新中心 —> Available —> Search,输入 GitLab,在列表中点击 install 安装,安装完毕后重启 SonarQube 即可。

注意:该插件 sonar-gitlab-plugin 兼容 SonarQube 的版本信息如下

SonarQube sonar-gitlab-plugin Last version
<version> < 5.4 <version> <= 1.6.6 1.66
5.4 <= <version> < 5.6 <version> = 1.7.0 1.7.0
<version> >= 5.6 <version> > 1.7.0 2.1.0

配置 GitLab 通用账户

这里为了方便统一管理,我们在 GitLab 上注册一个通用账号:sonarQube,作为对接 SonarQube 的统一账户,注册过程略,获取Token方式入下:
sonarQube 登录,点击 setting —> 访问令牌 ,获取的 User Token 为下边插件配置使用。同时还需要将 SonarQube 加到项目成员或项目所属项目组成员里面去,这样才能有权限 comment 和添加注释行。

配置 sonar-gitlab-plugin 插件

admin 登录 SonarQube,点击 配置 —> 通用配置 —> GitLab —> Reporting —> 设置 GitLab User Token 以及 GitLab url。GitLab User Token 为 GitLab 上用户的 Token(这里使用上边统一账户 sonarQube Token),其他配置默认即可。

SonarQube生成Token

在sonarqube中生成token供yml中使用

gitlab-ci使用(以java maven项目为例子)

1)配置pom.xml(以下为所需要加载的插件:spring-boot-maven-plugin、maven-compiler-plugin、sonar-maven-plugin、jacoco-maven-plugin)

<build>
  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
      </plugin>

      <plugin>
        <groupId>org.sonarsource.scanner.maven</groupId>
        <artifactId>sonar-maven-plugin</artifactId>
         <version>3.6.1.1688</version>
      </plugin>

      <plugin>
         <groupId>org.jacoco</groupId>
         <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.8.5</version>
      </plugin>

    </plugins>
  </pluginManagement>
</build>

2)gitlab-ci.yml

variables:
  MAVEN_CLS_OPTS: "-s /usr/local/maven/conf/settings.xml --batch-mode"
  MAVEN_OPTS: "-Daven.repo.local=/home/gitlab-runner/.m2/repository" 
  SONAR_TOKEN: "24e536eec4084dc9859137c1734ebb6b1612de95"    # sonarqube生成的token
  SONAR_HOST_URL: "http://192.168.6.16:9000/"   # sonarqube的地址
  GIT_DEPTH: 1

stages:
  - test

job1:
  stage: test
  script:
  - cd $CI_PROJECT_DIR/demo
  - mvn --batch-mode verify sonar:sonar -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_TOKEN

gitlab-ci集成SonarQube代码质量检查的更多相关文章

  1. Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目

    在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...

  2. Jenkins+SonarQube代码质量检查自动化

    基础概念百度百科:Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:1.持续的软件版本发布/测试项目.2.监控外部调用执行的工作.前面[Sonarqube 代码质量 ...

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

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

  4. jenkins集成sonarqube代码审核

    目前在持续集成领域,除了后起之秀travis ci,在老牌工具中,最著名的还是非jenkins莫属.本篇文章简单的说一声jenkins与sonarqube的集成来实现代码的静态审核. 在这里不详细罗列 ...

  5. Jenkins+Sonar搭建持续集成和代码质量检查环境

    Jenkins+Sonar搭建 一.相关环境及下载地址 系统:Ubuntu JDK:1.8 MySQL:5.7 软件包: jenkins_2.121.3_all.deb sonarqube-7.3.z ...

  6. sonarqube代码质量检查简单使用说明

    本文翻译自sonarqube官网文档,原地址为:https://docs.sonarqube.org/latest/architecture/architecture-integration/ 一,架 ...

  7. jenkins集成sonarQube实现代码质量检查

    1.sonarQube的简介 SonarQube是一款自动化代码审查工具,用于检测代码中的错误.漏洞和代码异味.它可以与你现有的工作流集成,以支持跨项目分支和拉取请求的连续代码检查. 其工作流程如下: ...

  8. Gitlab CI 自动部署 asp.net core web api 到Docker容器

    为什么要写这个? 在一个系统长大的过程中会经历不断重构升级来满足商业的需求,而一个严谨的商业系统需要高效.稳定.可扩展,有时候还不得不考虑成本的问题.我希望能找到比较完整的开源解决方案来解决持续集成. ...

  9. jenkins集成sonar代码审核工具

    在项目测试管理过程中,项目上线很多时候时间仓促,导致代码质量不高,测试时间不充分会导致线上出现各种各样的问题,这个时候一方面是增加测试的质量把控,还要从根本上解决开发小哥的代码质量问题.而Sonar这 ...

随机推荐

  1. WPF教程十五:数据模板的使用(重发)

    数据模板 数据模板是一段如何显示绑定在VM对象的XAML代码.数据模板可以包含任意元素的组合,基于Binding来显示不同的信息. 在实际的开发中数据模板的应用场景很多,同样一个控件可以根据不同的绑定 ...

  2. mysql 索引介绍与运用

    索引 (1)什么是索引? 是一种提升查询速度的 特殊的存储结构. 它包含了对数据表里的记录的指针,类似于字典的目录. 当我们添加索引时会单独创建一张表来去存储和管理索引,索引比原数据大,会占用更多的资 ...

  3. Linux基本操作 [转]

    前言 只有光头才能变强 这个学期开了Linux的课程了,授课的老师也是比较负责任的一位.总的来说也算是比较系统地学习了一下Linux了~~~ 本文章主要是总结Linux的基础操作以及一些简单的概念~如 ...

  4. QT. 学习之路 三

    添加一个动作: Qt 使用QAction类作为动作.QAction包含了图标.菜单文字.快捷键.状态栏文字.浮动帮助等信息.当把一个QAction对象添加到程序中时,Qt 自己选择使用哪个属性来显示, ...

  5. P4827「国家集训队」 Crash 的文明世界

    「国家集训队」 Crash 的文明世界 提供一种不需要脑子的方法. 其实是看洛谷讨论版看出来的( (但是全网也就这一篇这个方法的题解了) 首先这是一个关于树上路径的问题,我们可以无脑上点分治. 考虑当 ...

  6. DNS配置【正向解析】

    DNS配置.正向解析                一.BIND域名服务基础                  1)DNS的定义                  2)域名结构             ...

  7. C语言:2.2

    #include <stdio.h> int main() { unsigned short bla=32768; short blb=32768; printf("%d %d\ ...

  8. DEV C++自定义函数顺序与printf用法

    #include <stdio.h> //int gys(int a,int b);//函数声明 int main() { int a = 520; int c1=98; int c2=5 ...

  9. 【JavaWeb】请求和响应Request&Response

    请求 请求对象 关于请求 顾名思义,意思就是请求一个"对象" 请求不到的,别想了 请求,就是使用者希望从服务器端索取一些资源,向服务器发出询问.在B/S架构中,就是客户浏览器向服务 ...

  10. 队列Queue:任务间的消息读写,安排起来~

    摘要:本文通过分析鸿蒙轻内核队列模块的源码,掌握队列使用上的差异. 本文分享自华为云社区<鸿蒙轻内核M核源码分析系列十三 消息队列Queue>,作者:zhushy . 队列(Queue)是 ...