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/

 

原文地址:https://www.cnblogs.com/leavescy/p/14004444.html