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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cckevincyh/article/details/88617374

前提

不知道怎么装Docker还有Jenkins的同学可以参考我前面的博文:使用Jenkins+Pipeline+Docker将Spring Boot应用部署到Tomcat,本文的关注点在于集成SonarQube,以及对项目中的Groovy代码进行质量检测,因为我们做的这个项目是使用Groovy开发的。。所以在集成SonarQube的时候遇到了一些问题,所以在这里做一下记录。。而且最好把你们的虚拟机的配置调高点,不然可能启动docker的时候会很慢很卡。。
在这里插入图片描述
在这里插入图片描述
提供一些参考资料:
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的版本

在这里插入图片描述

在这里插入图片描述

下载完成之后就可以进去sonarqube的页面,然后登陆
在这里插入图片描述

用户名和密码都是admin
在这里插入图片描述

Groovy插件

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

把下载的插件放到与windows关联的共享文件夹下
在这里插入图片描述

然后进入sonar的docker里面。
在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

然后我们还需要在sonarqube里面生成一个token。。一会在集成到jenkins需要。。
在这里插入图片描述
在这里插入图片描述

配置Jenkins

下载sonarqube-scanner插件。

在这里插入图片描述

然后配置sonarqube-scanner
在这里插入图片描述

配置你sonarqube的服务器URL地址,还有token
在这里插入图片描述

配置groovy项目

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

  <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>pre-test</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
          <execution>
            <id>post-test</id>
            <phase>test</phase>
            <goals>
              <goal>report</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

还有groovy的maven插件

   <plugin>
        <groupId>org.codehaus.gmavenplus</groupId>
        <artifactId>gmavenplus-plugin</artifactId>
        <version>1.5</version>
        <executions>
          <execution>
            <goals>
              <goal>addSources</goal>
              <goal>addTestSources</goal>
              <goal>generateStubs</goal>
              <goal>compile</goal>
              <goal>testGenerateStubs</goal>
              <goal>testCompile</goal>
              <goal>removeStubs</goal>
              <goal>removeTestStubs</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

还有加入jacoco的依赖

  <dependency>
      <groupId>org.jacoco</groupId>
      <artifactId>org.jacoco.agent</artifactId>
      <classifier>runtime</classifier>
      <version>0.7.9</version>
      <scope>test</scope>
    </dependency>

之后需要在项目的根路径加上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项目

在这里插入图片描述

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

进来只会点击高级按钮,配置一下自定义的工作空间
在这里插入图片描述
在这里插入图片描述
配置一下触发条件
在这里插入图片描述
配置sonarqube scanner
在这里插入图片描述
配置上我们项目构建好的路径
在这里插入图片描述

这里说需要我们全局工具上设置一下sonarqube,然后我们在这里配一下。在这里插入图片描述
在这里插入图片描述

保存ok了。

只会构建一下gallery-server项目,构建玩galler-server项目就会自动跑sonarqube了。。
在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/cckevincyh/article/details/88617374