/
quality-gates.groovy
71 lines (54 loc) · 2.21 KB
/
quality-gates.groovy
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
@Grapes(
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1')
)
import static groovyx.net.http.Method.GET
import static groovyx.net.http.ContentType.JSON
def env = build.getEnvironment()
def http = new groovyx.net.http.HTTPBuilder(env.serverUrl)
def getTaskStatus(http, env) {
def _basicAuth = env.SONAR_AUTH_TOKEN+':'
def _basicAuthEncoded = _basicAuth.bytes.encodeBase64().toString()
http.request(GET, JSON) {
uri.path = '/api/ce/task'
uri.query = [ id: env.ceTaskId ]
headers.'Accept' = 'application/json'
headers.'Authorization' = 'Basic ' + _basicAuthEncoded
response.success = { resp, json ->
assert resp.status == 200
return json.task.status
}
}
}
while ( getTaskStatus(http, env) == "PENDING" || getTaskStatus(http, env) == "IN_PROGRESS" ) {
println "Waiting for SonarQube results"
sleep(1000)
}
def status = getTaskStatus(http, env)
if ((status == "FAILED") || (status == "CANCELED")) {
throw("SonarQube Task-Status is: ${status}")
}
def basicAuth = env.SONAR_AUTH_TOKEN+':'
def basicAuthEncoded = basicAuth.bytes.encodeBase64().toString()
http.request(GET, JSON) {
uri.path = '/api/ce/task'
uri.query = [ id: env.ceTaskId ]
headers.'Accept' = 'application/json'
headers.'Authorization' = 'Basic ' + basicAuthEncoded
response.success = { resp, json ->
assert resp.status == 200
qgClient = new groovyx.net.http.HTTPBuilder(env.serverUrl)
qgClient.request(GET, JSON) {
uri.path = '/api/qualitygates/project_status'
uri.query = [ analysisId: json.task.analysisId ]
headers.'Accept' = 'application/json'
headers.'Authorization' = 'Basic ' + basicAuthEncoded
response.success = { qresp, qualitygate ->
assert qresp.status == 200
println qualitygate
assert qualitygate.projectStatus.status != 'WARN' : "SonarQube Reported a WARNING"
assert qualitygate.projectStatus.status != 'ERROR' : "SonarQube Reported an ERROR"
println "SonarQube Results is: ${qualitygate.projectStatus.status}"
}
}
}
}