Jenkins集成SonarQube
Jenkins集成SonarQube
1.Jenkins配置
使用管理员登录Jenkins.
1.1 使用管理员登录Jenkins安装SonarQube插件 SonarQube Scanner for Jenkins (注意不同Jenkins版本,显示的插件名称略有差异)

1.2 配置 Sonarqube,依次点击: 系统管理 -> 系统配置 -> 新增一个Sonarqube

1.3 配置 SonarScanner,依次点击: 系统管理 -> 全局工具配置 -> 新增一个SonarScanner

2.Sonarqube配置
新建一个手工项目,项目 -> 新增项目 -> 手工,输入你的项目名称,点击设置.

3.在Jenkins中新建Job
在Jenkins中新建一个名为spring-boot-jdbc-starter的流水线任务,Jenkinsfile示例如下:
pipeline {
agent any
stages {
stage('SCM') {
steps {
checkout scm
}
}
stage('SonarQube Analysis') {
environment {
// Set the scannerHome variable to the SonarScanner tool path
// scannerHome = tool 'SonarScanner'
mvn = tool 'maven'
}
steps {
withSonarQubeEnv('sonarqube'){
// sh "${scannerHome}/bin/sonar-scanner"
// sh "${mvn}/bin/mvn findbugs:findbugs"
sh "${mvn}/bin/mvn clean verify sonar:sonar -Dsonar.projectKey=spring-boot-jdbc-starter -Dsonar.branch.name=${gitlabSourceBranch}"
}
}
}
}
post {
// 同步任务状态到 gitlab
always {
echo "构建完成! 状态:${currentBuild.currentResult}"
script {
// def status = currentBuild.result == 'SUCCESS' ? 'success' : 'failed'
def status = currentBuild.currentResult.toString().toLowerCase()
if (status == 'failure'){ status = 'failed' }
updateGitlabCommitStatus name: 'jenkins', state: status
}
}
success {
echo '构建成功!'
}
failure {
echo '构建失败!'
}
}
}
其他Jenkinsfile示例:
Python示例
# 在项目的根路径下创建 sonar-project.properties 文件,执行sonar-scanner时就不用显示的指定 sonar.projectKey 参数了, 内容如下:
#
# sonar.projectKey=sonar_pythonapp
#
stage('SonarQube Analysis') {
environment {
// Set the scannerHome variable to the SonarScanner tool path
// 在全局工具配置中配置 SonarScanner, 变量值就是配置的 SonarQube Scanner Name
scannerHome = tool 'SonarScanner'
}
steps {
// withSonarQubeEnv('sonarqube') 表示在SonarQube环境中运行
// 在系统管理-系统配置中配置 SonarQube servers
// 1. 选中 environment variables
// 2. Nmae 输入 sonarqube,表示SonarQube服务器的名称
withSonarQubeEnv('sonarqube'){
// 添加参数 -Dsonar.branch.name=${gitlabSourceBranch}"
sh "${scannerHome}/bin/sonar-scanner
}
}
}
Java示例
在项目的根路径下没有创建 sonar-project.properties 文件,在执行 sonarscanner 时需要显示的指定 sonar.projectKey 等参数.
stage('SonarQube Analysis') {
environment {
// 在全局工具配置中配置 maven, 变量值就是配置的 Maven Name
// Set the maven variable to the maven tool path
mvn = tool 'maven'
}
steps {
// withSonarQubeEnv('sonarqube') 表示在SonarQube环境中运行
// 在系统管理-系统配置中配置 SonarQube servers
// 1. 选中 environment variables
// 2. Nmae 输入 sonarqube,表示SonarQube服务器的名称
withSonarQubeEnv('sonarqube'){
// sh "${mvn}/bin/mvn findbugs:findbugs"
sh "${mvn}/bin/mvn clean verify sonar:sonar -Dsonar.projectKey=spring-boot-tester -Dsonar.branch.name=${gitlabSourceBranch}"
}
}
}
4.查看显示效果
查看Jenkins任务状态

查看Sonarqube分析结果



浙公网安备 33010602011771号