• sonar之gitlab ci 在gradle项目的实践(汉化、branch、 commit提交评论)


    关于sonar可以干什么,相信大家都清楚:主要作用是静态代码检查,话不多说,接下来看如何一步一步在gradle项目中配置gitlab ci接入sonar

    本文主要讲解: 1如何下载安装sonar, 2.多分支的配置, 3. ci脚本的编写, 4 需要的插件

    1.  下载sonar: https://www.sonarqube.org/  , 我们要下载什么版本取决于每个sonar版本的先决条件是不一样的,即什么样的环境支持可以支持什么样的版本

    根据要求里面看自己的硬件和软件环境是否符合该版本, 比如数据库,jdk版本,磁盘情况等

    中文版: http://www.sonar.org.cn/category/install

      

    2.  将下载好的sonar放到服务器上,解压后,可以在

    sonarqube-7.6/conf目录下找到

    2.1 sonar.properties文件就是配置文件,需要配置下数据库,web服务器的地址和端口

     sonar.jdbc.url=jdbc:mysql://数据库ip:3306/数据库?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
    
     sonar.jdbc.username=数据库名字
    
     sonar.jdbc.password=数据库密码
    
     sonar.sorceEncoding=UTF-8
    
     sonar.login=admin
    
     sonar.password=admin
    
    sonar.web.host=服务器的ip
    
    sonar.web.port=服务器端口(可以设置为你想要的任何端口,只要该端口没有被其他服务占用即可,这里一般设置为9000, 我这块设置的是9001)
    

     配置完成后,保存即可;

     2.2 启动sonar服务器

     在sonarqube-7.6/bin/linux-x86-64目录下存在一个sonar.sh文件

     在该目录下,启动服务 sh sonar.sh start

    sh sonar.sh start // 启动服务
    sh sonar.sh restart // 关闭再重启
    sh sonar.sh stop // 关闭服务  

    2.3  在浏览器输入2.1中配置的服务器ip和端口,http://服务器ip:9001/用户名和密码都是admin,若是服务没有起来,要去下面的日志文件里面看是什么原因导致

    此时,可以在sonarqube-7.6/logs下面的日志有很多

    主要是看access.log(项目上传sonar的相关日志), sonar.log(sonar本身的日志), web.log(web服务的日志)

    大部分问题的原因可能是:数据库没连上,端口和ip写错了

    下面图表示启动成功

     2.4 如果要配置多分支情况,下载https://github.com/mc1arke/sonarqube-community-branch-plugin插件,存放在sonarqube-7.6/extensions/plugin 和 lib/common下重启服务器即可 (一定要看清楚版本)

    3. 我们项目的部署:首先项目在在gitlab上的,然后也配置了ci相关, 那如何加入和sonar相关的配置呢?

    在gitlab-ci.yml文件中 ,stages增加一个测试, 然后image是采用的哪个gradle镜像(根据自己情况写),其余照着写就成

    其中变量在ci的这个地方配置即可 

    变量配置只需要配置

    SONAR_URL 和SONAR_LOGIN 即可,因为其他配置是gitlab自带的, 其中SONAR_URL的地址是就是上面写的服务器+ip地址,SONAR_LOGIN是在sonar服务器上面配置的,我们后面在说(先记下有个配置没完成哦)
    stages:
      - 测试
    # ----------
    master 分支 sonar:
      tags:
        - k8s
      stage: 测试
      only:
        - master
      image: mirror-library-gradle:4.10-jdk8
      retry: 1
      variables:
        GRADLE_OPTS: -Dorg.gradle.daemon=false
      script:
        - gradle sonarqube -Dsonar.host.url=$SONAR_URL -Dsonar.login=$SONAR_LOGIN -Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA -Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME -Dsonar.gitlab.project_id=$CI_PROJECT_ID
    
    其他分支 sonar:
      tags:
        - k8s
      stage: 测试
      except:
        - master
      image: mirror-library-gradle:4.10-jdk8
      retry: 1
      variables:
        GRADLE_OPTS: -Dorg.gradle.daemon=false
      script:
        - gradle sonarqube -Dsonar.host.url=$SONAR_URL -Dsonar.login=$SONAR_LOGIN -Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA -Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME -Dsonar.branch.name=$CI_COMMIT_REF_NAME -Dsonar.gitlab.project_id=$CI_PROJECT_ID
    

     login的生成是在这块,可以填写一个名称(随便就好),然后点击生成,会有一个字符串,请千万记好哦,该字符串就是gitlab登陆sonar的标识,也是我们在ci里面配置的nage SOANR_LOGIN的value值; 

    4. 在sonar中还要配置gitlab相关的配置:

    4.1插件安装

     如何无法安装,可在https://github.com/gabrie-allaigre/sonar-auth-gitlab-plugin 和https://github.com/gabrie-allaigre/sonar-gitlab-plugin地方下载对应版本的插件,然后放在extensions/plugin里面,然后sh sonar.sh restart重启即可

    4.2 gitlab地址,在gitlab url的地方写上git的地址,写到.com就可以了

    5. 此时一切就绪,我们就可以执行gitlab ci来进行项目的静态代码分析了,可以在项目当中切换分支,

    可以看具体的扫描结果: 

    6. 备注: 切换到其他分支时,扫描的结果是基于master分支的,也就是说master分支有的异常不会再该分支出现;所以可能会出现空的情况,不要诧异哦(我也是踩了坑才知道的)

    7. commit配置:主要包括git的地址和 其中token 是需要去gitlab上生成的(该账户需要有项目的开发权限才可以),

    生成的token也一定一定要记住,和之前一样,生成一次后就看不见了, 将该token放在上述地址的此时去执行gitlab-ci就会出现

    commit底下会出现下图所示

    但这只是一些汇总

    参考文献: https://blog.csdn.net/aixiaoyang168/article/details/78115646/

     

  • 相关阅读:
    【BZOJ】4636: 蒟蒻的数列
    BZOJ1878 [SDOI2009]HH的项链
    【网络流24题----02】太空飞行计划
    【网络流24题----03】Air Raid最小路径覆盖
    【网络流24题----01】飞行员配对方案问题
    素数判定(米勒测试定理-费马小定理+快速乘)
    一堆模板(丑陋0.0)------数据结构
    丑数(USACO)
    NOI[2001]食物链
    关于Tarjan(2)
  • 原文地址:https://www.cnblogs.com/leavescy/p/14004444.html
Copyright © 2020-2023  润新知