Jenkins使用Pipeline方式配置SonarQupe
- 一、jenkins-->Manage Plugins:安装插件 SonarQube Scanner for Jenkins
-
- 二、jenkins-->Configure System:配置 SonarQube servers
-
- 三、jenkins-->Global Tool Configuration:配置 SonarQube Scanner
- 四、新建一个 project
- 注意点
一、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