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分析结果
分类:
运维
, 运维 / devops
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?