Jenkins (五) - Docker SonarQube

Jenkins (五) - Docker SonarQube

Jenkins 集成 SonarQube,编译项目并通过SonarQube分析项目

前提

基于已有的环境 Jenkins (四) - Docker SonarQube

基于 Jenkins (三) - 拉取编译 上的mockito-demo工程

配置工程

Administration -> Projects -> Management

Create Project


配置用户

Create User


Group sonar-users 所有的认证用户默认都是属于此组。

设置权限



分析工程

通过设置,生成 maven 远程调用脚本,为后续 Jenkins集成SonarQube编译提供便利

点击项目 mockito-demo

点击 Local


sqp_8d4181eca2705f6724922c760ffacecdb2327423


由于mockito-demo项目是maven工程而非 Gradle工程,Copy 生成的maven脚本

bash 复制代码
mvn clean verify sonar:sonar \
  -Dsonar.projectKey=mockito-demo \
  -Dsonar.projectName='mockito-demo' \
  -Dsonar.host.url=http://192.168.56.102:9000 \
  -Dsonar.token=sqp_8d4181eca2705f6724922c760ffacecdb2327423

配置Jenkins pipeline

将以上mvn clean verify sonar:sonar ... 配置入pipeline中

groovy 复制代码
node {
    def mvnHome
    stage('Preparation') { // for display purposes
        echo 'Checkout'
        checkout scmGit(branches: [[name: '*/main']], extensions: [], userRemoteConfigs: [[credentialsId: 'fernado', url: 'https://github.com/fernado/mockito-demo.git']])
        mvnHome = tool 'maven396'
    }
    stage('Analyze') {
        echo 'Sonaqube'
        withEnv(["MVN_HOME=$mvnHome"]) {
            if (isUnix()) {
                sh '"$MVN_HOME/bin/mvn" clean verify sonar:sonar -Dsonar.projectKey=mockito-demo -Dsonar.projectName=mockito-demo -Dsonar.host.url=http://192.168.56.102:9000 -Dsonar.token=sqp_8d4181eca2705f6724922c760ffacecdb2327423'
            } else {
                bat(/"%MVN_HOME%\bin\mvn" -Dmaven.test.failure.ignore clean package/)
            }
        }
    }
    stage('Build') {
        echo 'Build'
        // Run the maven build
        withEnv(["MVN_HOME=$mvnHome"]) {
            if (isUnix()) {
                sh '"$MVN_HOME/bin/mvn" -Dmaven.test.failure.ignore clean package'
            } else {
                bat(/"%MVN_HOME%\bin\mvn" -Dmaven.test.failure.ignore clean package/)
            }
        }
    }
    stage('Test Results') {
        echo 'Test Results'
        sh 'make check || true' 
        junit '**/target/surefire-reports/TEST-*.xml'
        archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true
    }
    stage('Deploy') {
        echo 'Deploy'
        // when {
        //   expression {
        //     currentBuild.result == null || currentBuild.result == 'SUCCESS' 
        //   }
        // }
        // steps {
        //     sh 'make publish'
        // }
    }
}

Build Now

查看SonarQube生成项目结果





用户 Tokens Create

Administrator -> Security -> 用户 -> sonar_user -> Tokens

用户 Tokens Revoke

与 Tokens Create 类似,进入Administrator -> Security -> 用户 -> Revoke

相关推荐
上海安当技术1 小时前
老系统零改造接入:旁路代理统一认证实战
java·servlet·架构·kubernetes·jenkins
ShiXZ2131 小时前
Docker 安装 Elasticsearch 7.17.6 完整教程
elasticsearch·docker·容器
Mr. zhihao2 小时前
Jenkins 从节点连不上主节点?一次网络排查全记录 + 机器间通信“拦截层“全景讲解
网络·servlet·jenkins
念何架构之路2 小时前
moby-BuildKit(builder-next)
学习·docker·容器
风曦Kisaki2 小时前
Kubernetes(K8s)笔记Day04:控制器(ReplicaSet 与Deployment),滚动更新及回滚,滚动更新策略,Pod 的 DNS 策略
linux·运维·笔记·docker·容器·kubernetes
爱码少年3 小时前
此docker compose非彼docker-compose
docker
January丶3 小时前
docker-compose部署RabbitMQ(含管理页面)
docker
January丶3 小时前
docker-compose部署ElasticSearch集群
docker
johnny2333 小时前
镜像管理工具Skopeo实战
docker
极客先躯16 小时前
高级java每日一道面试题-2026年05月03日-实战篇[Docker]-如何实现容器化环境的数据加密?
java·运维·docker·容器·金融·加解密·高级面试