Skip to content
This repository was archived by the owner on Feb 8, 2021. It is now read-only.

Commit bcae698

Browse files
authored
Merge pull request #25 from charleston10/master
Update plugin Sonar for support new version GoCD
2 parents 1756a54 + 7f83483 commit bcae698

File tree

6 files changed

+36
-44
lines changed

6 files changed

+36
-44
lines changed

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,8 @@ hs_err_pid*
1616

1717
*/target/*
1818
out/*.jar
19-
target/lib/*.jar
19+
target/lib/*.jar
20+
21+
.settings/
22+
.project
23+
.classpath
Binary file not shown.

sonar-qualitygates-plugin/src/com/tw/go/task/sonarqualitygate/SonarClient.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,11 @@ public SonarClient(String apiUrl) throws GeneralSecurityException
2020

2121
public JSONObject getProjectWithQualityGateDetails(String projectKey) throws Exception
2222
{
23-
String uri = getApiUrl() + "/resources?resource=%1$s&metrics=quality_gate_details";
23+
String uri = getApiUrl() + "/qualitygates/project_status?projectKey=%1$s";
2424
uri = String.format(uri, projectKey);
2525
String resultData = requestGet(uri);
2626

27-
JSONArray jsonArray = new JSONArray(resultData);
28-
JSONObject jsonObject = jsonArray.getJSONObject(0);
27+
JSONObject jsonObject = new JSONObject(resultData);
2928

3029
return jsonObject;
3130
}
Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.tw.go.task.sonarqualitygate;
22

3-
import org.json.JSONArray;
43
import org.json.JSONObject;
54

65
/**
@@ -14,30 +13,14 @@ public SonarParser(JSONObject projectResult){
1413
this.project = projectResult;
1514
}
1615

17-
public JSONObject GetQualityGateDetails()
16+
public String getProjectQualityGateStatus()
1817
{
19-
if (project.has("msr")) {
20-
JSONArray msrList = project.getJSONArray("msr");
21-
22-
for (int i = 0; i < msrList.length(); i++)
23-
{
24-
JSONObject msr = (JSONObject) msrList.get(i);
25-
String key = msr.getString("key");
26-
27-
if("quality_gate_details".equals(key))
28-
{
29-
String data = msr.getString("data");
30-
//data = data.replace("\\", "");
31-
JSONObject resultObj = new JSONObject(data);
32-
return resultObj;
33-
}
34-
18+
if (project.has("projectStatus")) {
19+
JSONObject projectStatus = project.getJSONObject("projectStatus");
20+
if (projectStatus.has("status")) {
21+
return projectStatus.getString("status");
3522
}
36-
37-
3823
}
3924
return null;
4025
}
41-
42-
43-
}
26+
}

sonar-qualitygates-plugin/src/com/tw/go/task/sonarqualitygate/SonarScanTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,4 @@ private Map getConfigDef() {
100100
public GoPluginIdentifier pluginIdentifier() {
101101
return new GoPluginIdentifier("task", Arrays.asList("1.0"));
102102
}
103-
}
103+
}

sonar-qualitygates-plugin/src/com/tw/go/task/sonarqualitygate/SonarTaskExecutor.java

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import com.thoughtworks.go.plugin.api.task.JobConsoleLogger;
66
import com.tw.go.plugin.common.*;
77
import org.json.JSONObject;
8+
import org.json.JSONArray;
9+
import org.json.JSONException;
810

911
import java.security.GeneralSecurityException;
1012
import java.util.Map;
@@ -44,12 +46,21 @@ public Result execute() throws Exception {
4446
// log(" Requesting project's quality gate anonymously.");
4547
// }
4648

47-
// get quality gate details
49+
//get quality gate details
4850
JSONObject result = sonarClient.getProjectWithQualityGateDetails(sonarProjectKey);
51+
JSONObject project = (JSONObject) result.get("projectStatus");
52+
JSONArray periods = (JSONArray) project.get("periods");
53+
JSONObject lastPeriod = (JSONObject) periods.get(periods.length() - 1);
54+
55+
String lastDate = (String) lastPeriod.get("date");
56+
String lastVersion = (String) lastPeriod.get("parameter");
4957

5058
if (!("".equals(stageName)) && !("".equals(jobName)) && !("".equals(jobCounter))) {
5159
String scheduledTime = getScheduledTime();
52-
String resultDate = result.getString("date");
60+
61+
62+
63+
String resultDate = lastDate;
5364
resultDate = new StringBuilder(resultDate).insert(resultDate.length()-2, ":").toString();
5465

5566
int timeout = 0;
@@ -64,15 +75,15 @@ public Result execute() throws Exception {
6475

6576
timeout = timeout + timeoutTime;
6677

67-
resultDate = result.getString("date");
78+
resultDate = lastDate;
6879
resultDate = new StringBuilder(resultDate).insert(resultDate.length()-2, ":").toString();
6980

7081
if (timeout > timeLimit) {
7182

7283
log("No new scan has been found !");
7384

74-
log("Date of Sonar scan: " + result.getString("date"));
75-
log("Version of Sonar scan: " + result.getString("version"));
85+
log("Date of Sonar scan: " + lastDate);
86+
log("Version of Sonar scan: " + lastVersion);
7687

7788
return new Result(false, "Failed to get a newer quality gate for " + sonarProjectKey
7889
+ ". The present quality gate is older than the start of the Sonar scan task.");
@@ -82,31 +93,27 @@ public Result execute() throws Exception {
8293

8394
}
8495

85-
log("Date of Sonar scan: " + result.getString("date"));
86-
log("Version of Sonar scan: " + result.getString("version"));
96+
log("Date of Sonar scan: " + lastDate);
97+
log("Version of Sonar scan: " + lastVersion);
8798

8899
SonarParser parser = new SonarParser(result);
89100

90101
// check that a quality gate is returned
91-
JSONObject qgDetails = parser.GetQualityGateDetails();
92-
93-
String qgResult = qgDetails.getString("level");
102+
String qgResult = parser.getProjectQualityGateStatus();
94103

95104
// get result issues
96105
return parseResult(qgResult, issueTypeFail);
97106

98107
}
99108
else {
100109

101-
log("Date of Sonar scan: " + result.getString("date"));
102-
log("Version of Sonar scan: " + result.getString("version"));
110+
log("Date of Sonar scan: " + lastDate);
111+
log("Version of Sonar scan: " + lastVersion);
103112

104113
SonarParser parser = new SonarParser(result);
105114

106115
// check that a quality gate is returned
107-
JSONObject qgDetails = parser.GetQualityGateDetails();
108-
109-
String qgResult = qgDetails.getString("level");
116+
String qgResult = parser.getProjectQualityGateStatus();
110117

111118
// get result issues
112119
return parseResult(qgResult, issueTypeFail);
@@ -178,5 +185,4 @@ protected int compareDates(String date1, String date2)
178185
protected String getPluginLogPrefix(){
179186
return "[SonarQube Quality Gate Plugin] ";
180187
}
181-
182188
}

0 commit comments

Comments
 (0)