• Sonar Qube 持续集成实践


    1.什么是SonarQube

    sonarqube 是一个开源的代码质量管理系统,用于检测代码中的错误,漏洞和代码规范,他可以基于现有的Gitlab、Jenkins 集成、以便在项目拉取后进行连续的代码检查。

    image.png

    1.1.使用SonarQube前提

    1.sonarqube基于java开发所以需要安装JDK1.8版本。

    2.SonarQube需要依赖MySQL数据库,至少5.6以上版本。

    3.SonarQube 的小型实例至少需要4G内存,如果大型实例需要16GB

     

    2.Sonar Qube安装

    2.1环境准备

    [root@mail logs]# systemctl stop firewalld
    [root@mail logs]# systemctl enable firewalld

    2.2安装SonarQube依赖工具

    yum -y install git java unzip wget -y
    wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.6-community-el7-x86_64/mysql-community-client-5.6.45-2.el7.x86_64.rpm
    wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.6-community-el7-x86_64/mysql-community-common-5.6.45-2.el7.x86_64.rpm
    wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.6-community-el7-x86_64/mysql-community-libs-5.6.45-2.el7.x86_64.rpm
    wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.6-community-el7-x86_64/mysql-community-server-5.6.45-2.el7.x86_64.rpm
     
    [root@mail tools]# yum localinstall -y mysql-community-*

    2.3启动数据库,然后为数据库配置密码,创建sonar库

    systemctl restart mysqld
    mysqladmin password 1234
    mysql -uroot -p1234 -e "create database sonar default character set utf8;"
     mysql -uroot -p1234 -e "show databases;"

    2.4下载SonarQube 并安装解压至/usr/local/

    官方下载地址:https://binaries.sonarsource.com/

     unzip sonarqube-7.0.zip -d /usr/local/
     useradd sonar
      chown -R sonar.sonar /usr/local/sonarqube-7.0/
      s /usr/local/sonarqube-7.0/ /usr/local/sonarqube

    2.5修改sonarqube数据库配置文件

    [root@mail tools]# cat /usr/local/sonarqube/conf/sonar.properties
    sonar.jdbc.username=root
    sonar.jdbc.password=1234
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
    

    2.6启动 SonarQube

    su - sonar -c "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh restart"
    
    
    默认密码admin/admin
    复制令牌进行保留

    image.pngimage.png

    3.SonarQube 插件管理

    3.1安装中文汉化插件Chinese Pack

          安装后重启SonarQube

    image.png

    3.2安装代码检查插件

    默认安装了C Java Python  PHP Js 等质量分析工具。可以根据项目自行安装html css golang

    image.png

     

    4.Sonarquebe项目分析

    4.1.分析html java 项目

    如以上项目需要安装依赖sonar-scaner命令。

     wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-4.0.zip
     unzip sonar-scanner-cli-4.0.0.1744-linux.zip -d /usr/local/
     ln -s /usr/local/sonar-scanner-4.0.0.1744-linux/ /usr/local/sonar

    4.2 配置sonar-scanner客户端指向SonarQube服务端以及认证的token

    [root@node-140 sonar]# cat /usr/local/sonar/conf/sonar-scanner.properties
    
    sonar.host.url=http://192.168.100.118:9000
    sonar.login=e6e89488da1d3051006be436a4899d4209771851
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
    sonar.sourceEncoding=UTF-8
    

    image.png

     

    5.分析项目

    5.1.分析html项目

    [root@node-140 ESL前端_山田117]# /usr/local/sonar/bin/sonar-scanner -Dsonar.projectKey=html -Dsonar.sources=. -X

    image.png

     

    5.2 分析java项目

    java项目可以通过maven进行代码质检,无需使用sonr-scaner工具,安装maven工具即可。

    yum -y install maven

    获取java代码,进入项目目录,使用mvn进行代码扫描

    mvn sonar:sonar   -Dsonar.host.url=http://192.168.100.118:9000   -Dsonar.login=e6e89488da1d3051006be436a4899d4209771851

     

    6.jenkins集成SonarQube

    通常sonarqube需要配合持续继承工具使用,可以做到拉起代码则立即执行质量检测

    1.插件安装-系统管理-插件管理-》SonarQube Scaner for Jenkins

    2.需要在jenkins上配置Sonarqube服务端

    系统管理-系统设置-sonarqube

    Name随便填,url填写Sonarqube的地址,token填写之前安装,SonarQube的token

     

    image.png

    6.1jenkins 构建前端项目

    image.png

    6.2参数如下

    sonar.projectName=${JOB_NAME}  sonarqube显示名称
    sonar.projectKey=html    唯一标识
    sonar.sources=.    扫描那个项目的源码

    image.png

    6.3配置maven项目集成Sonar

    maven项目可以使用sonar-Scanner工具,也可以使用maven的方式进行检测,两种方式任选其一即可,

    第一种方式,通过Sonar-Scanner方式进行代码质检。

    image.png

    sonar.projectName=${JOB_NAME}
    
    sonar.projectKey=java
    
    sonar.sources=. 
    
    sonar.java.binaries=target/classes

    image.png

    根据持续集成的设计,代码从提交到生产

    image.png

     
     
  • 相关阅读:
    核心API的使用(给定一个字符串,统计每个字符出现的次数)
    将博客搬至CSDN
    [DEBUG] python写文件时print漏掉整行数据
    [DEBUG] pyinstaller打包-命令行报错 pyinstaller failed to execute script 脚本名
    [DEBUG] springboot结合freemaker和js实现页面跳转和传值-踩坑记录
    724. 寻找数组的中心索引
    1010. 总持续时间可被 60 整除的歌曲
    27.移除元素
    [tensorflow] 入门day1-数据整理与展示
    [tensorflow] 安装
  • 原文地址:https://www.cnblogs.com/sseban/p/14523452.html
Copyright © 2020-2023  润新知