forked from javahometech/my-app
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjenkins-file-qualitygate-status-check
43 lines (40 loc) · 1.41 KB
/
jenkins-file-qualitygate-status-check
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import groovy.json.JsonSlurperClassic
node{
stage('Checkout'){
def repoURL = 'https://github.com/javahometech/my-app'
git branch: 'master', url: repoURL
}
stage('SonarQube Analysis'){
def mvnHome = tool name: 'maven-3', type: 'maven'
withCredentials([string(credentialsId: 'sonarqube-token', variable: 'sonarToken')]) {
def sonarCMD = "sonar:sonar -Dsonar.host.url=http://35.154.40.90:9000 -Dsonar.login=${sonarToken}"
sh "${mvnHome}/bin/mvn ${sonarCMD}"
}
}
stage('Sonar QualityGate Status'){
// load report file generated by sonar under target/sonar/report-task.txt
def sonarReport = readFile 'target/sonar/report-task.txt'
def props = new Properties()
def data = props.load(new StringReader(sonarReport))
def ctaskURL = props.getProperty('ceTaskUrl')
timeout(time: 1, unit: 'MINUTES') {
waitUntil {
sh "curl ${ctaskURL} -o response.json"
status = getQualityGateStatus()
return !"IN_PROGRESS".equals(status) && !"PENDING".equals(status)
}
}
}
stage('Set Build Status'){
status = getQualityGateStatus()
if(! "SUCCESS".equals(status)){
error "Qualitygates Failed"
}
}
}
def getQualityGateStatus(){
def respDataFilr = readFile('response.json')
def jsonSlurper = new JsonSlurperClassic()
data = jsonSlurper.parseText(respDataFilr)
return data['task']['status']
}