环境安装

使用 Docker Compose 运行 SonarQube 7.9.2
使用 Docker Compose 运行 Jenkins

Sonarqube 创建令牌

创建地址:{your_sonarqube_server}/account/security/
填写令牌名称,然后创建,令牌记得立即保存,否则后面就看不到了

Sonarqube 配置 Jenkins Webhooks

配置地址:{your_sonarqube_server}/admin/webhooks
Jenkins Webhooks 地址:{your_jenkins_server}/sonarqube-webhook/

Jenkins 安装 Sonarqube 插件

插件列表搜索关键词 SonarQube Scanner for Jenkins 进行安装

Jenkins 配置 Sonarqube Server

创建凭证

创建地址:{your_jenkins_server}/credentials/store/system/domain/_/newCredentials
选择 Sercert text 类型,Sercert 填写 刚创建的 Sonarqube 令牌,ID 随便写(如:sonarqube)

配置 Server

配置地址:{your_jenkins_server}/configure
添加一个 Sonarqube Server,填写 Name(后面 withSonarQubeEnv 使用的就是这个名称)、Server Url ,选择刚才创建的凭证,然后保存即可

Jenkins Pipeline 使用 Sonarqube

以 Maven 项目为例

pipeline {
    agent none
    // 定义环境变量
    environment {
        GIT_URL = 'https://github.com/belier-cn/spring-boot-docker.git'
    }
    stages {
        stage('Checkout') {
            agent any
            steps {
                // 拉取代码,参考文档:https://jenkins.io/doc/pipeline/steps/workflow-scm-step/
                checkout([$class: 'GitSCM', branches: [[name: '*/master']], userRemoteConfigs: [[url: GIT_URL]]])
            }
        }
        stage('Build') {
            agent {
                // 参考文档:https://jenkins.io/zh/doc/book/pipeline/docker/
                docker {
                    image 'maven:3-alpine'
                    // 挂载目录,如果要配置 maven 的阿里云仓库地址,在 /usr/local/src/maven 下放一个配置好的 settings.xml 文件即可
                    args '-v /usr/local/src/maven:/root/.m2'
                }
            }
            steps {
                withSonarQubeEnv('SonarQube') {
                    sh 'mvn clean -Dmaven.test.skip=true package org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar'
                }
            }

        }

        // 等待 SonarQube 执行结束并回调
        stage("Quality Gate") {
            steps {
                // 设置超时时间为1小时,避免一直等待
                timeout(time: 1, unit: 'HOURS') {
                    waitForQualityGate abortPipeline: true
                }
            }
        }

    }
}

参考

SonarQube Scanner for Jenkins

写的不好,仅供参考