美文网首页
DevOps之集成Sonar Qube

DevOps之集成Sonar Qube

作者: 羋学僧 | 来源:发表于2022-07-05 17:07 被阅读0次

    集成Sonar Qube

    1、 Sonar Qube介绍

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

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

    Sonar Qube的UI界面

    2、 Sonar Qube环境搭建

    2.1、 Sonar Qube安装

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

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

    • 拉取镜像

      docker pull postgres
      docker pull sonarqube:8.9.6-community
      
    • 编写docker-compose.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文件信息

    vim /etc/sysctl.conf
    
    设置vm.max_map_count

    并执行命令刷新

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

      容器日志
    • 访问Sonar Qube首页

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

      重新设置密码
    • Sonar Qube首页

      Sonar Qube首页
    2.2、 安装中文插件
    安装中文插件

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

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

    重启按钮

    重启后查看效果

    首页效果

    3、 Sonar Qube基本使用

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

    3.1、 Maven实现代码检测
    • 修改Maven的settings.xml文件配置Sonar Qube信息

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

      执行代码检测
    • 查看Sonar Qube界面检测结果

      Sonar Qube检测结果
    3.2、 Sonar-scanner实现代码检测

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

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

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

        yum -y install unzip
        
      • 解压压缩包

        unzip sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip
        
    mv sonar-scanner-4.7.0.2747-linux/ sonar-scanner
    mv sonar-scanner /usr/local/docker/jenkins_docker/data/
    
    • 配置sonarQube服务端地址,修改conf下的sonar-scanner.properties
    vim sonar-scanner.properties
    
    |                        配置服务端信息                        |
    | :----------------------------------------------------------: |
    | ![](https://img.haomeiwen.com/i14270006/3e4decd0e8785bee.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)|
    
    • 执行命令检测代码
      生成访问令牌
    # 在项目所在目录执行以下命令
    cd /usr/local/docker/jenkins_docker/data/workspace/DevOpsDemo/
    
    /usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=demo -Dsonar.projectKey=java -Dsonar.java.binaries=target/ -Dsonar.login=910f1ea7a8314944fe31581244aa0283342bef58
    

    Ps:主要查看我的sonar-scanner执行命令的位置

    查看日志信息
    • 查看SonarQube界面检测结果

      检测结果

    4、 Jenkins集成Sonar Qube

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

    4.1、 Jenkins安装插件
    下载Sonar Qube插件
    4.2、 Jenkins配置Sonar Qube
    • 开启Sonar Qube权限验证

      开启Sonar Qube权限校验
    • 获取Sonar Qube的令牌

      获取令牌
    • 配置Jenkins的Sonar Qube信息

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

      配置Sonar-scanner
    • 配置任务的Sonar-scanner

      配置任务的Sonar-scanner
    4.4、 构建任务
    构建任务

    相关文章

      网友评论

          本文标题:DevOps之集成Sonar Qube

          本文链接:https://www.haomeiwen.com/subject/nifsbrtx.html