使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量

文章目录

    • 前提
    • 安装SonarQube
    • Groovy插件
    • 配置Jenkins
      • 配置groovy项目
    • 新建jenkins项目

前提

不知道怎么装Docker还有Jenkins的同学可以参考我前面的博文:使用Jenkins+Pipeline+Docker将Spring Boot应用部署到Tomcat,本文的关注点在于集成SonarQube,以及对项目中的Groovy代码进行质量检测,因为我们做的这个项目是使用Groovy开发的。。所以在集成SonarQube的时候遇到了一些问题,所以在这里做一下记录。。而且最好把你们的虚拟机的配置调高点,不然可能启动docker的时候会很慢很卡。。
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第1张图片
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第2张图片
提供一些参考资料:
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins
https://blog.csdn.net/u010697874/article/details/51859823
https://blog.csdn.net/qq_23589557/article/details/60141576
https://github.com/groovy/GMavenPlus/wiki/Examples
https://www.linuxea.com/1755.html
https://www.jianshu.com/p/aaa33bac5e2e

安装SonarQube

因为我这里项目中用的是Groovy,所以这里只针对于Groovy项目的操作。
所以在弄Groovy项目的时候,安装的SonarQube的版本也是有要求的,sonarqube的版本要在7.3以下,6.7以上。好像是因为插件的问题不兼容还是其他的原因。
在安装groovy的插件sonar-groovy-plugin-1.5.jar,之后启动的时候SonarQube Scanner会报如下错误:

ERROR: Error during SonarQube Scanner execution ERROR: org.sonar.plugins.groovy.codenarc.CodeNarcSensor has unsatisfied dependency 'class org.sonar.plugins.groovy.foundation.GroovyFileSystem' for constructor 'public org.sonar.plugins.groovy.codenarc.CodeNarcSensor(org.sonar.api.profiles.RulesProfile,org.sonar.plugins.groovy.foundation.GroovyFileSystem)' from org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer@55b62629:110<[Immutable]:org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer@64ec96c6:465<[Immutable]:org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer@7af52ec7:52<|

所以我这里直接找了一个6.7的版本

使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第3张图片

使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第4张图片

下载完成之后就可以进去sonarqube的页面,然后登陆
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第5张图片

用户名和密码都是admin
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第6张图片

Groovy插件

需要sonar-groovy-plugin-1.5.jar,可以去我的资源页上去下载https://download.csdn.net/download/cckevincyh/11029030

把下载的插件放到与windows关联的共享文件夹下
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第7张图片

然后进入sonar的docker里面。
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第8张图片

然后把我们的插件拷贝到sonar的插件目录下。

使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第9张图片

复制到/opt/sonarqube/extenstions/plugins目录下,然后重启sonar。

重启完成之后进入到sonar的页面,如果看到如下界面,说明groovy插件已经集成进去了。

使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第10张图片

然后我们还需要在sonarqube里面生成一个token。。一会在集成到jenkins需要。。
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第11张图片
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第12张图片

配置Jenkins

下载sonarqube-scanner插件。

使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第13张图片

然后配置sonarqube-scanner
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第14张图片

配置你sonarqube的服务器URL地址,还有token
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第15张图片

配置groovy项目

在pom.xml中需要加入jacoco的插件

  
        org.jacoco
        jacoco-maven-plugin
        
          
            pre-test
            
              prepare-agent
            
          
          
            post-test
            test
            
              report
            
          
        
      

还有groovy的maven插件

   
        org.codehaus.gmavenplus
        gmavenplus-plugin
        1.5
        
          
            
              addSources
              addTestSources
              generateStubs
              compile
              testGenerateStubs
              testCompile
              removeStubs
              removeTestStubs
            
          
        
      

还有加入jacoco的依赖

  
      org.jacoco
      org.jacoco.agent
      runtime
      0.7.9
      test
    

之后需要在项目的根路径加上sonar的配置文件。
需要指定sonar.host.url,也就是sonarqube服务器的url。
注意sonar.groovy.binaries=./target/classes这里的是.groovy

sonar.host.url=http://192.168.99.100:32817
sonar.projectKey=gallery-server
sonar.projectName=gallery-server
sonar.projectVersion=1.0
sonar.sources=./src/main/groovy
sonar.sourceEncoding=UTF-8
sonar.groovy.binaries=./target/classes
sonar.tests=./src/test/groovy
sonar.dynamicAnalysis=reuseReports
sonar.groovy.coveragePlugin=jacoco
sonar.junit.reportsPath=target/surefire-reports
sonar.surefire.reportsPath=target/surefire-reports
sonar.exclusions=**/com/cc/gallery/security/**/*.groovy,**/com/cc/gallery/api_versions/**/*.groovy,**/com/cc/gallery/**/*Exception.groovy,**/com/cc/gallery/GalleryApplication.groovy

新建jenkins项目

使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第16张图片

我们需要指定一下之前创建的pipline项目构建好之后运行,可以参考我上一篇博文。。

进来只会点击高级按钮,配置一下自定义的工作空间
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第17张图片
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第18张图片
配置一下触发条件
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第19张图片
配置sonarqube scanner
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第20张图片
配置上我们项目构建好的路径
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第21张图片

这里说需要我们全局工具上设置一下sonarqube,然后我们在这里配一下。使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第22张图片
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第23张图片

保存ok了。

只会构建一下gallery-server项目,构建玩galler-server项目就会自动跑sonarqube了。。
使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第24张图片

使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量_第25张图片

但是目前还存在一个问题就是测试完发现代码结尾最后的括号}没有覆盖到。。很奇怪,希望有大神给出解决方案。。

在这里插入图片描述

你可能感兴趣的:(Docker,Jenkins)