【云原生】DevOps(四):集成Sonar Qube

1,128 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第20天,点击查看活动详情 在这里插入图片描述

@TOC

前言: 📢📢📢 当下云原生火爆全网,云原生充分利用了云计算弹性、敏捷、资源池和服务化特性,改变云端应用的设计、开发、部署和运行模式,为我们大大提供了便利,本篇文章将带大家走进云原生的世界,揭开它的神秘面纱。 💕 入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀 💓最后,愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺

一、Sonar Qube介绍

Sonar Qube是一个开源的代码分析平台,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。

Sonar Qube可以与多种软件整合进行代码扫描,比如Maven,Gradle,Git,Jenkins等,并且会将代码检测结果推送回Sonar Qube并且在系统提供的UI界面上显示出来

Sonar Qube的UI界面
在这里插入图片描述

二、Sonar Qube环境搭建

1. Sonar Qube安装

Sonar Qube在7.9版本中已经放弃了对MySQL的支持,并且建议在商业环境中采用PostgreSQL,那么安装Sonar Qube时需要依赖PostgreSQL。

并且这里会安装Sonar Qube的长期支持版本8.9

  • 拉取镜像

    docker pull postgres
    docker pull sonarqube:8.9.3-community
    
  • 编写docker-compoe.yml

    version: "3.1"
    services:
      db:
        image: postgres
        container_name: db
        ports:
          - 5432:5432
        networks:
          - sonarnet
        environment:
          POSTGRES_USER: sonar
          POSTGRES_PASSWORD: sonar
      sonarqube:
        image: sonarqube:8.9.3-community
        container_name: sonarqube
        depends_on:
          - db
        ports:
          - "9000:9000"
        networks:
          - sonarnet
        environment:
          SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
          SONAR_JDBC_USERNAME: sonar
          SONAR_JDBC_PASSWORD: sonar
    networks:
      sonarnet:
        driver: bridge
    
  • 启动容器

    docker-compose up -d
    
  • 需要设置sysctl.conf文件信息

    设置vm.max_map_count

在这里插入图片描述

| [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-psH0GSDZ-1657006614692)(Pictures/image-20211207145342350.png)] | 并执行命令刷新

sysctl -p
  • 重新启动需要一定时间启动,可以可以查看容器日志,看到如下内容代表启动成功

    容器日志

  • 访问Sonar Qube首页

    登录

在这里插入图片描述

  • 还需要重新设置一次密码

    重新设置密码

在这里插入图片描述

  • Sonar Qube首页

    Sonar Qube首页

在这里插入图片描述

2. 安装中文插件

安装中文插件
在这里插入图片描述

安装成功后需要重启,安装失败重新点击install重装即可。

安装成功后,会查看到重启按钮,点击即可

重启按钮
在这里插入图片描述

重启后查看效果

首页效果
在这里插入图片描述

三、Sonar Qube基本使用

Sonar Qube的使用方式很多,Maven可以整合,也可以采用sonar-scanner的方式,再查看Sonar Qube的检测效果

1. Maven实现代码检测

  • 修改Maven的settings.xml文件配置Sonar Qube信息

    <profile>
        <id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <sonar.login>admin</sonar.login>
            <sonar.password>123456789</sonar.password>
            <sonar.host.url>http://192.168.11.11:9000</sonar.host.url>
        </properties>
    </profile>
    
  • 在代码位置执行命令:mvn sonar:sonar

    执行代码检测

在这里插入图片描述

  • 查看Sonar Qube界面检测结果

    Sonar Qube检测结果

在这里插入图片描述

2. Sonar-scanner实现代码检测

  • 下载Sonar-scanner:下载网址

    下载4.6.x版本即可,要求Linux版本

  • 解压并配置sonar服务端信息

    • 由于是zip压缩包,需要安装unzip解压插件

      yum -y install unzip
      
    • 解压压缩包

      unzip sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip
      
    • 配置sonarQube服务端地址,修改conf下的sonar-scanner.properties

      配置服务端信息

在这里插入图片描述

在这里插入图片描述

  • 查看SonarQube界面检测结果

    检测结果

在这里插入图片描述

四、Jenkins集成Sonar Qube

Jenkins继承Sonar Qube实现代码扫描需要先下载整合插件

1. Jenkins安装插件

下载Sonar Qube插件
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2. Jenkins配置Sonar Qube

  • 开启Sonar Qube权限验证

    开启Sonar Qube权限校验

在这里插入图片描述

  • 获取Sonar Qube的令牌

    获取令牌

在这里插入图片描述

  • 配置Jenkins的Sonar Qube信息

在这里插入图片描述 在这里插入图片描述

在这里插入图片描述

3. 配置Sonar-scanner

  • 将Sonar-scaner添加到Jenkins数据卷中并配置全局配置

    配置Sonar-scanner

在这里插入图片描述

  • 配置任务的Sonar-scanner

    配置任务的Sonar-scanner

在这里插入图片描述

4. 构建任务

构建任务
在这里插入图片描述
在这里插入图片描述