Jenkins使用Pipeline方式配置SonarQupe

1 篇文章 0 订阅
1 篇文章 0 订阅

一、jenkins–>Manage Plugins:安装插件 SonarQube Scanner for Jenkins

在这里插入图片描述

二、jenkins–>Configure System:配置 SonarQube servers

1)先在 sonarQube 平台创建 token,用来配置 jenkins 登录 sonarQube
在这里插入图片描述
2)添加 token凭证
在这里插入图片描述

3)然后在 jenkins 的 Configure System 配置 Name、Server URL、Server authentication token
在这里插入图片描述

三、jenkins–>Global Tool Configuration:配置 SonarQube Scanner

在这里插入图片描述

四、新建一个 project

写pipeline script

node{
    stage ("编译准备") {
        echo '==== prepare stage start ===='
        if(params.MODULE){
            env.app=params.MODULE
        }else{
            env.app='.'
        }
        env.check_to = params.BRANCH_OR_TAG
        echo '==== prepare stage end ===='
    }
    stage ("源码下载") {
        echo '==== git pull start ===='
        echo env.image_version
        echo '||'
        git credentialsId: params.GIT_CREADENTIAL, url: params.GIT_URL
        sh '[ -n "${check_to}" ] &&  git checkout ${check_to} ||  { echo -e "切换至指定BRANCH或者TAG的版本,check:${check_to} 不存在或为空,请检查输入的BRANCH和TAG!" && exit 111; }'
        echo '||'
        echo '==== git pull end   ===='
    }
    stage ("编译打包") {
        echo '==== mvn package begin ===='
        echo '||'
        sh 'cd ${app} && mvn clean package -Dmaven.test.skip=true -U -T 1C'
         
        echo '||'
        echo '==== mvn package  end   ===='
    }
    stage('SonarQube analysis'){
        //steps {
            script {
                  // requires SonarQube Scanner 2.8+
                  //这里填写,在系统管理中配置的sonar服务器名称
                  scannerHome = tool 'sonarqube-dev'
            }
            withSonarQubeEnv('sonarqube-dev') {
                    sh "${scannerHome}/bin/sonar-scanner " +
                    //在sonar中项目的名称
                    "-Dsonar.projectKey=master " +
                    //在sonar中项目的名称
                    "-Dsonar.projectName=master " +
                    "-Dsonar.sourceEncoding=UTF-8 " +
                    //项目类型
                    "-Dsonar.language=java " +
                    //需要过滤的文件类型
                    "-Dsonar.exclusions=**/*.css,**/*.js,**/*.xml " +
                    //pom中的版本
                    "-Dsonar.projectVersion=2021.8.0 " +
                    //需要检查代码的路径
                    "-Dsonar.sources=master-business/src/main/java " +
                    //需要检查代码源码路径
                    "-Dsonar.java.binaries=**/target/classes"
            }
            sleep(10)
            // 这个睡眠时为了防止没有分析完成就去请求结果
            timeout(time: 5, unit: 'MINUTES') {
                script {
                    def qg = waitForQualityGate()
                    if (qg.status != 'OK') {
                        error "Pipeline aborted due to a quality gate failure: ${qg.status}"
                    }
                }
            }
        //}
    }
}

实际运行结果:
在这里插入图片描述
在这里插入图片描述

注意点

1、我之前跑用例的时候,一直提示我

ERROR: Error during SonarScanner execution
org.sonar.java.AnalysisException: Please provide compiled classes of your project with sonar.java.binaries property
找了各种文档都说只需要加
-Dsonar.java.binaries这个配置就可以了,但是实际都加了,还是不行
也有回覆说有java代码导致,让过滤掉,但是实际也没有用 使用命令:-Dsonar.exclusions
最后无意发现,这里的run命令的所有命令,都是连在一起的,如下图
在这里插入图片描述
最后,就是将所有命令中都加一个空格
在这里插入图片描述

2、注意点:
ERROR: Re-run SonarScanner using the -X switch to enable full debug logging.
这个地方的报错,需要开启SCM
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值