Skip to content

Commit f4a1eb0

Browse files
Merge pull request #72 from imonteroperez/ui-creation-config
Manual creation of Jira issues should use global config only
2 parents 6073bb4 + b82760c commit f4a1eb0

File tree

5 files changed

+24
-12
lines changed

5 files changed

+24
-12
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.jenkinsci.plugins.JiraTestResultReporter;
2+
3+
/**
4+
* Represents what triggered the request for a Jira issue creation
5+
* @author imontero
6+
*/
7+
public enum JiraIssueTrigger {
8+
JOB, UI
9+
}

src/main/java/org/jenkinsci/plugins/JiraTestResultReporter/JiraTestAction.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ public String getDisplayName() {
247247
@JavaScriptMethod
248248
public FormValidation createIssue() {
249249
try {
250-
String id = JiraUtils.createIssue(job, project, testData.getEnvVars(), test);
250+
String id = JiraUtils.createIssue(job, project, testData.getEnvVars(), test, JiraIssueTrigger.UI);
251251
return StringUtils.isBlank(id) ? FormValidation.error("Duplicate already exists") : setIssueKey(id);
252252
} catch (RestClientException e) {
253253
JiraUtils.logError("Error when creating issue", e);

src/main/java/org/jenkinsci/plugins/JiraTestResultReporter/JiraTestDataPublisher.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ private boolean raiseIssues(TaskListener listener, Job project, Job job,
275275
for(CaseResult test : testCaseResults) {
276276
if(test.isFailed()) {
277277
try {
278-
JiraUtils.createIssue(job, project, envVars, test);
278+
JiraUtils.createIssue(job, project, envVars, test, JiraIssueTrigger.JOB);
279279
raised = true;
280280
} catch (RestClientException e) {
281281
listener.error("Could not create issue for test " + test.getFullDisplayName() + "\n");
@@ -667,4 +667,4 @@ public List getListDescriptors() {
667667
return Jenkins.getInstance().getDescriptorList(AbstractFields.class);
668668
}
669669
}
670-
}
670+
}

src/main/java/org/jenkinsci/plugins/JiraTestResultReporter/JiraUtils.java

+11-8
Original file line numberDiff line numberDiff line change
@@ -109,16 +109,16 @@ public static String getErrorMessage(RestClientException e, String newLine) {
109109
}
110110

111111
public static String createIssue(Job job, EnvVars envVars, CaseResult test) throws RestClientException {
112-
return createIssue(job, job, envVars, test);
112+
return createIssue(job, job, envVars, test, JiraIssueTrigger.JOB);
113113
}
114114

115-
public static String createIssue(Job job, Job project, EnvVars envVars, CaseResult test) throws RestClientException {
115+
public static String createIssue(Job job, Job project, EnvVars envVars, CaseResult test, JiraIssueTrigger trigger) throws RestClientException {
116116
synchronized (test.getId()) { //avoid creating duplicated issues
117117
if(TestToIssueMapping.getInstance().getTestIssueKey(job, test.getId()) != null) {
118118
return null;
119119
}
120120

121-
IssueInput issueInput = JiraUtils.createIssueInput(project, test, envVars);
121+
IssueInput issueInput = JiraUtils.createIssueInput(project, test, envVars, trigger);
122122
SearchResult searchResult = JiraUtils.findIssues(project, test, envVars, issueInput);
123123
if (searchResult != null && searchResult.getTotal() > 0) {
124124
boolean duplicate = false;
@@ -159,7 +159,7 @@ public static Set<String> searchIssueKeys(Job job, EnvVars envVars, CaseResult t
159159
return issueKeys;
160160
}
161161

162-
IssueInput issueInput = JiraUtils.createIssueInput(job, test, envVars);
162+
IssueInput issueInput = JiraUtils.createIssueInput(job, test, envVars, JiraIssueTrigger.JOB);
163163
SearchResult searchResult = JiraUtils.findIssues(job, test, envVars, issueInput);
164164
if (searchResult != null && searchResult.getTotal() > 0) {
165165
for (Issue issue: searchResult.getIssues()) {
@@ -170,16 +170,19 @@ public static Set<String> searchIssueKeys(Job job, EnvVars envVars, CaseResult t
170170
}
171171
}
172172

173-
private static IssueInput createIssueInput(Job project, TestResult test, EnvVars envVars) {
173+
private static IssueInput createIssueInput(Job project, TestResult test, EnvVars envVars, JiraIssueTrigger trigger) {
174174
final IssueInputBuilder newIssueBuilder = new IssueInputBuilder(
175175
JobConfigMapping.getInstance().getProjectKey(project),
176176
JobConfigMapping.getInstance().getIssueType(project));
177-
//first use the templates and then override them if other configs exist
177+
//first use the templates and then override them if other configs exist and it is requested from a job execution (not UI badge)
178178
for(AbstractFields f : JiraTestDataPublisher.JiraTestDataPublisherDescriptor.templates) {
179179
newIssueBuilder.setFieldInput(f.getFieldInput(test, envVars));
180180
}
181-
for (AbstractFields f : JobConfigMapping.getInstance().getConfig(project)) {
182-
newIssueBuilder.setFieldInput(f.getFieldInput(test, envVars));
181+
182+
if (trigger.equals(JiraIssueTrigger.JOB)) {
183+
for (AbstractFields f : JobConfigMapping.getInstance().getConfig(project)) {
184+
newIssueBuilder.setFieldInput(f.getFieldInput(test, envVars));
185+
}
183186
}
184187
return newIssueBuilder.build();
185188
}

src/main/java/org/jenkinsci/plugins/JiraTestResultReporter/TestToIssueMapping.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ public void removeTestToIssueMapping(Job job, String testId, String issueKey) {
204204
}
205205

206206
synchronized (jobMap) {
207-
if(jobMap.get(testId).equals(issueKey)) {
207+
if(jobMap.get(testId) != null && jobMap.get(testId).equals(issueKey)) {
208208
jobMap.remove(testId);
209209
saveMap(job, jobMap);
210210
}

0 commit comments

Comments
 (0)