Jenkins集成SonarQube

Jenkins集成SonarQube

1.Jenkins配置

使用管理员登录Jenkins.

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

image

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

image

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

image

2.Sonarqube配置

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

image

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任务状态

image

查看Sonarqube分析结果

image
image

posted @   tomoncle  阅读(677)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示