一 背景
随着我们公司后端同学的增加,需要更关注代码的质量情况,我们也没有很多的时间去做代码的review工作,那么就会想到通过一些静态代码检查的平台工具来解决。而SonarQube毋庸置疑,是当前各大互联网公司最常用的代码检查平台,除非自己公司有自研的代码检查平台,否则通常都会使用SonarQube。(至于如何安装SonarQube,请参考文章:https://mafgwo.cn/2021/05/16/2024_sonarqube-install/)
而有了SonarQube之后,我们就要考虑怎么把它与我们当前的Jenkins流水线自动化构建结合起来。
结合的方式,我们不太想在我们的项目依赖中增加sonar相关的插件等等,想直接在流水线上做一些事情,就能直接把代码的检查加进去,那么该如何做呢。
二 Jenkins中增加SonarScanner插件及配置
首先,在Jenkins系统管理 -> 插件管理里找到SonarQube Scanner for Jenkins插件直接安装。
插件安装好之后,到Jenkins系统管理 -> 全局工具配置 配置SonarQube Scanner,如下
再到Jenkins系统管理 -> 系统配置 配置SonarQube Server,如下
配置SonarQube Server用到的 Server authentication token,直接在右边点添加,弹出来框直接添加凭据,其中的Secret是从SonarQube我的账号 -> 安全 中生成:
至此,Jenkins的配置已经完成。
三 Jenkins流水线配置
在我们原有的流水线中,增加如下阶段:
1 | stage('SonarQube Analysis') { |
如此,我们的项目就增加上了SonarQube的代码检查分析,项目构建后,就可以到SonarQube后台看到这个项目的检查情况了。
你们自己的Gitlab项目,可以在根路径增加Jenkinsfile
的方式,测试SonarQube检查,如下:
1 | node { |
如果是前端项目如vue项目,还需要依赖NodeJS插件,流水线配置如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19node {
stage('SCM') {
checkout scm
}
stage('SonarQube Analysis') {
sh "echo sonar.projectKey=xxx-project > sonar-project.properties"
sh "echo sonar.projectName=xxx-project >> sonar-project.properties"
sh "echo sonar.projectVersion=1.0 >> sonar-project.properties"
sh "echo sonar.language=java >> sonar-project.properties"
sh "echo sonar.sourceEncoding=UTF-8 >> sonar-project.properties"
sh "echo sonar.sources=$WORKSPACE/src >> sonar-project.properties"
def scannerHome = tool 'SonarScanner';
nodejs(nodeJSInstallationName: 'NodeJS 11.1.0', configId: 'npm-config-file') {
withSonarQubeEnv() {
sh "${scannerHome}/bin/sonar-scanner"
}
}
}
}
Jenkins流水线如图:
SonarQube项目如下图: