使用Docker+Jenkins+SonarQube实现自动化检测Groovy代码质量
前提不知道怎么装Docker还有Jenkins的同学可以参考我前面的博文:使用Jenkins+Pipeline+Docker将Spring Boot应用部署到Tomcat,本文的关注点在于集成SonarQube,以及对项目中的Groovy代码进行质量检测,因为我们做的这个项目是使用Groovy开发的。。所以在集成SonarQube的时候遇到了一些问题,所以在这里做一下记录。。而且最好把你们的虚拟.
前提
不知道怎么装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了。。
但是目前还存在一个问题就是测试完发现代码结尾最后的括号}没有覆盖到。。很奇怪,希望有大神给出解决方案。。
更多推荐
所有评论(0)