我自己在使用代码检测工具 sonarqube结合 jenkins的过程中属实踩了不少的坑,首先是不是很懂,其次是盲目的看着别人的博客就开始做,没有自己思考其中的实现原理和官网的说明。
写个博客:一是分享实现的方法和其中的坑。二是贴一些比较好的链接方便参考和学习。
环境准备:
jenkins |
sonarqube server |
sonarqube scanner |
一个可以进行maven 构建部署的 simple-maven 流水线项目。 |
从这两个工具就可以看到了,jenkins下载对应的插件的时候,我也就以为是 server这一个软件,你下载下来的软件,通常也没有明显 server的后缀,
上面第一个。所以就这样瞎搞一通没有实现。后文指的server也就是启动第一个软件。
所谓流水线项目,是jenkins中创建项目的一种,在jenkins中,有自由项目,maven项目,流水线项目。建立项目直接选择流水线项目即可,只需要配置,代码仓库和对应的 Jenkinsfile 路径:
Jenkinsfile代码:
// pipeline {
// agent any
// stages {
// stage('Build') {
// steps {
// sh 'mvn -B -DskipTests clean package'
// }
// }
// }
// }
node {
stage('SCM') {
checkout scm
}
stage('SonarQube Analysis') {
def scannerHome = tool 'SonarScanner';
withSonarQubeEnv() {
sh "${scannerHome}/bin/sonar-scanner.bat"
}
}
}
文末链接中项目已经包含
配置:
下载好对应的软件:
进入bin启动 server 运行之后,就可以访问 http://localhost:9000,
首次一般会更新密码。之后新建一个名字为 ss 的项目。这个名字在jenkinsfile中的配置要用(sonar.projectKey=ss)。之前别人说的所谓的添加 生成的secret token到配置里面,但我试了一直没用,一直报错说:需要login 和密码。最后实现的方法是不用添加,直接把账号和密码,填在项目中的 sonar-project.properties
文件:名字为什么是这个,通常是默认名字,在官网有说明:
完整的文件代码给出如下:
sonar-project.properties
sonar.projectKey=ss # server中建立的项目名字
sonar.login=admin # 账号
sonar.password=whoelse105105 #密码
sonar.exclusions=*.java
sonar.java.binaries=D:/go-project/simple-java-maven-app/target/classes #不报错可以不加,我报错了需要加这个
sonar.java.libraries=D:/go-project/simple-java-maven-app/target/classes #不报错可以不加,我报错了需要加这个
# sonar.java.binaries = target / classes
jenkins 的 Configuration System中配置:
system tool configuration配置 sonarqube scanner:
地址是解压之后的地址,因为这个地址配置是在 jenkinsfile中使用的。
使用配置是:
stage('SonarQube Analysis') {
def scannerHome = tool 'SonarScanner';
withSonarQubeEnv() {
sh "${scannerHome}/bin/sonar-scanner.bat"
}
}
所以要匹配这个配置,一个是tool名字要相同:都是:SonarScanner
另一个是调用的路径在本地的路径下确实可以找到,拼接来刚好是我本地的地址如下:
所以这个配置不要盲目配上就可以了,要懂得调用的逻辑,之所以这样配,可能即时和maven 一样,通常不把 bin目录加到 jenkins的配置中的默认的规则而已。
最后在jenkins中,点击构建触发流水线项目就可以了!
运行结果:
打包的tools获取:回复 sonarqube
官网链接:
sonarqube
https://www.sonarqube.org/