如何将 SonarQube Quality Gate 集成到我的 Jenkins 管道中?
How can I integrate SonarQube Quality Gate into my Jenkins pipeline?
我正在管道中执行一个命令来传递项目的声音,我需要的是,就像在正常工作中一样,声纳 link 在执行作业后仍然存在,同样的情况发生在管道中,现在当我 运行 它在管道中时,SonarQube link 没有保存,所以我有 groovy:
中的步骤
stage ('QA'){
steps {
echo 'executing sonar'
bat 'mvn sonar:sonar -Dsonar.host.url='+env.SONAR_URL+' -
Dsonar.projectName=QA:%JOB_BASE_NAME% -
Dsonar.projectKey=QA:%JOB_BASE_NAME%'
}
}
stage("Quality Gate"){
timeout(time: 1, unit: 'HOURS') { // Just in case something goes wrong, pipeline will be killed after a timeout
def qg = waitForQualityGate() // Reuse taskId previously collected by withSonarQubeEnv
if (qg.status != 'OK') {
error "Pipeline aborted due to quality gate failure: ${qg.status}"
}
}
}
尝试替换为:
stage ('QA'){
steps {
echo 'Running SonarQube..'
withSonarQubeEnv('XXXXXXXX') {
bat 'mvn sonar:sonar -Dsonar.host.url='+env.SONAR_URL+' -
Dsonar.projectName=QA:%JOB_BASE_NAME% -
Dsonar.projectKey=QA:%JOB_BASE_NAME%'
timeout(time: 1, unit: 'HOURS') {
script {
def qg = waitForQualityGate()
if (qg.status != 'OK') {
error "Pipeline aborted due to a quality gate failure: ${qg.status}"
}
}
}
}
}
}
请注意,XXXXXXXX 应替换为您在 Jenkins 中输入的 Sonar 配置的名称,路径为“管理 Jenkins”>“配置系统”>“SonarQube 服务器”
我正在管道中执行一个命令来传递项目的声音,我需要的是,就像在正常工作中一样,声纳 link 在执行作业后仍然存在,同样的情况发生在管道中,现在当我 运行 它在管道中时,SonarQube link 没有保存,所以我有 groovy:
中的步骤stage ('QA'){
steps {
echo 'executing sonar'
bat 'mvn sonar:sonar -Dsonar.host.url='+env.SONAR_URL+' -
Dsonar.projectName=QA:%JOB_BASE_NAME% -
Dsonar.projectKey=QA:%JOB_BASE_NAME%'
}
}
stage("Quality Gate"){
timeout(time: 1, unit: 'HOURS') { // Just in case something goes wrong, pipeline will be killed after a timeout
def qg = waitForQualityGate() // Reuse taskId previously collected by withSonarQubeEnv
if (qg.status != 'OK') {
error "Pipeline aborted due to quality gate failure: ${qg.status}"
}
}
}
尝试替换为:
stage ('QA'){
steps {
echo 'Running SonarQube..'
withSonarQubeEnv('XXXXXXXX') {
bat 'mvn sonar:sonar -Dsonar.host.url='+env.SONAR_URL+' -
Dsonar.projectName=QA:%JOB_BASE_NAME% -
Dsonar.projectKey=QA:%JOB_BASE_NAME%'
timeout(time: 1, unit: 'HOURS') {
script {
def qg = waitForQualityGate()
if (qg.status != 'OK') {
error "Pipeline aborted due to a quality gate failure: ${qg.status}"
}
}
}
}
}
}
请注意,XXXXXXXX 应替换为您在 Jenkins 中输入的 Sonar 配置的名称,路径为“管理 Jenkins”>“配置系统”>“SonarQube 服务器”