You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dp...@apache.org on 2019/04/27 08:50:51 UTC
[ignite-teamcity-bot] branch master updated: Showing JIRA status in
contributions table
This is an automated email from the ASF dual-hosted git repository.
dpavlov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
The following commit(s) were added to refs/heads/master by this push:
new db1abc4 Showing JIRA status in contributions table
db1abc4 is described below
commit db1abc42da0f5e13e233be4007d697c1a71a3c8e
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Sat Apr 27 11:50:49 2019 +0300
Showing JIRA status in contributions table
---
.../org/apache/ignite/ci/jira/pure/Ticket.java | 13 ++++++
.../ignite/ci/tcbot/visa/BranchTicketMatcher.java | 47 +++++++++++++---------
.../ignite/ci/tcbot/visa/ContributionToCheck.java | 3 ++
.../tcbot/visa/TcBotTriggerAndSignOffService.java | 6 ++-
.../org/apache/ignite/ci/web/model/Version.java | 2 +-
ignite-tc-helper-web/src/main/webapp/js/prs-1.1.js | 13 ++++++
6 files changed, 63 insertions(+), 21 deletions(-)
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Ticket.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Ticket.java
index 2209705..256bb3d 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Ticket.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Ticket.java
@@ -20,6 +20,8 @@ package org.apache.ignite.ci.jira.pure;
import com.google.common.base.MoreObjects;
import org.apache.ignite.ci.jira.ignited.TicketCompacted;
+import javax.annotation.Nullable;
+
/**
* See example of GSON here https://issues.apache.org/jira/rest/api/2/issue/IGNITE-123
*/
@@ -33,6 +35,13 @@ public class Ticket {
/** Fields. */
public Fields fields;
+ public Ticket() {}
+
+ public Ticket(String ticketKey) {
+ this.key = ticketKey;
+ }
+
+
/**
* @param projectCode JIRA project code to be removed from ticket key.
* @return Ignite ticket Number ignoring project code (like 123 in IGNITE-123).
@@ -46,7 +55,11 @@ public class Ticket {
/**
* @return Ticket status (open, resolved, etc);
*/
+ @Nullable
public String status() {
+ if (fields == null || fields.status == null)
+ return null;
+
return fields.status.name;
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/BranchTicketMatcher.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/BranchTicketMatcher.java
index b30272b..0c472d8 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/BranchTicketMatcher.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/BranchTicketMatcher.java
@@ -18,10 +18,6 @@
package org.apache.ignite.ci.tcbot.visa;
import com.google.common.base.Strings;
-import java.util.Collection;
-import java.util.Objects;
-import javax.inject.Inject;
-import javax.ws.rs.QueryParam;
import org.apache.ignite.ci.di.cache.GuavaCached;
import org.apache.ignite.ci.github.PullRequest;
import org.apache.ignite.ci.github.ignited.IGitHubConnIgnitedProvider;
@@ -35,6 +31,11 @@ import org.apache.ignite.ci.tcbot.conf.ITcBotConfig;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import javax.inject.Inject;
+import javax.ws.rs.QueryParam;
+import java.util.Collection;
+import java.util.Objects;
+
/**
*
*/
@@ -91,15 +92,20 @@ public class BranchTicketMatcher {
* @param pr Pr.
* @param jiraCfg Jira config.
*/
- @Nullable public String resolveTicketIdForPrBasedContrib(Collection<Ticket> tickets, PullRequest pr,
- IJiraServerConfig jiraCfg) {
+ @Nullable public Ticket resolveTicketIdForPrBasedContrib(Collection<Ticket> tickets, PullRequest pr,
+ IJiraServerConfig jiraCfg) {
String branchNumPrefix = jiraCfg.branchNumPrefix();
if (Strings.isNullOrEmpty(branchNumPrefix)) {
//an easy way, no special branch and ticket mappings specified, use project code.
String jiraPrefix = jiraCfg.projectCodeForVisa() + TicketCompacted.PROJECT_DELIM;
- return findFixPrefixedNumber(pr.getTitle(), jiraPrefix);
+ final String ticketKey = findFixPrefixedNumber(pr.getTitle(), jiraPrefix);
+
+ return tickets.stream()
+ .filter(t -> Objects.equals(t.key, ticketKey))
+ .findFirst()
+ .orElseGet(()->new Ticket(ticketKey));
}
String prTitle = pr.getTitle();
@@ -118,7 +124,8 @@ public class BranchTicketMatcher {
*/
@SuppressWarnings("WeakerAccess")
@GuavaCached(maximumSize = 3000, expireAfterWriteSecs = 60, cacheNullRval = true)
- protected String findTicketMentions(String srvCode, @Nullable String branchNum) {
+ @Nullable
+ protected Ticket findTicketMentions(String srvCode, @Nullable String branchNum) {
return findTicketMentions(jiraIgnProv.server(srvCode).getTickets(), branchNum);
}
@@ -126,13 +133,12 @@ public class BranchTicketMatcher {
* @param tickets Tickets.
* @param branchNum Branch number to be checked.
*/
- @Nullable private String findTicketMentions(Collection<Ticket> tickets, @Nullable String branchNum) {
+ @Nullable private Ticket findTicketMentions(Collection<Ticket> tickets, @Nullable String branchNum) {
if (Strings.isNullOrEmpty(branchNum))
return null;
return tickets.stream()
- .map(t -> t.key)
- .filter(k -> Objects.equals(k, branchNum))
+ .filter(t -> Objects.equals(t.key, branchNum))
.findFirst()
.orElseGet(() -> findTicketMentionsInSupplementaryFields(tickets, branchNum));
}
@@ -141,14 +147,13 @@ public class BranchTicketMatcher {
* @param tickets Tickets.
* @param branchNum Branch number to be checked.
*/
- @Nullable private String findTicketMentionsInSupplementaryFields(Collection<Ticket> tickets, String branchNum) {
+ @Nullable private Ticket findTicketMentionsInSupplementaryFields(Collection<Ticket> tickets, String branchNum) {
if (Strings.isNullOrEmpty(branchNum))
return null;
return tickets.stream()
.filter(t -> mentionsBranch(branchNum, t))
.findFirst()
- .map(t -> t.key)
.orElse(null);
}
@@ -244,10 +249,10 @@ public class BranchTicketMatcher {
}
else {
// PR less ticket only mentioned in real ticket
- String ticket = findTicketMentions(srvCode, prLessTicket);
+ Ticket ticket = findTicketMentions(srvCode, prLessTicket);
- if (!Strings.isNullOrEmpty(ticket))
- return ticket; // found real JIRA ticket for comment
+ if (ticket != null && !Strings.isNullOrEmpty(ticket.key))
+ return ticket.key; // found real JIRA ticket for comment
}
}
@@ -261,9 +266,13 @@ public class BranchTicketMatcher {
ticketFromPr = jiraPrefixInPr;
}
else {
- ticketFromPr = Strings.isNullOrEmpty(jiraPrefixInPr)
- ? null
- : findTicketMentions(srvCode, jiraPrefixInPr);
+ if (Strings.isNullOrEmpty(jiraPrefixInPr)) {
+ ticketFromPr = null;
+ } else {
+ Ticket ticketMentions = findTicketMentions(srvCode, jiraPrefixInPr);
+
+ ticketFromPr = ticketMentions == null ? null : ticketMentions.key;
+ }
}
if (!Strings.isNullOrEmpty(ticketFromPr))
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionToCheck.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionToCheck.java
index ecfcb5b..18903ba 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionToCheck.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionToCheck.java
@@ -50,6 +50,9 @@ package org.apache.ignite.ci.tcbot.visa;
/** JIRA issue without server URL, but with project name */
public String jiraIssueId;
+ /** JIRA issue statusName */
+ public String jiraStatusName;
+
/** Pr time update. */
public String prTimeUpdate;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
index d03d772..c8bc647 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
@@ -389,7 +389,10 @@ public class TcBotTriggerAndSignOffService {
c.prAuthorAvatarUrl = "";
}
- c.jiraIssueId = ticketMatcher.resolveTicketIdForPrBasedContrib(tickets, pr, jiraCfg);
+ Ticket ticket = ticketMatcher.resolveTicketIdForPrBasedContrib(tickets, pr, jiraCfg);
+
+ c.jiraIssueId = ticket == null ? null : ticket.key;
+ c.jiraStatusName = ticket == null ? null : ticket.status();
if (!Strings.isNullOrEmpty(c.jiraIssueId)
&& jiraCfg.getUrl() != null)
@@ -425,6 +428,7 @@ public class TcBotTriggerAndSignOffService {
ContributionToCheck contribution = new ContributionToCheck();
contribution.jiraIssueId = ticket.key;
+ contribution.jiraStatusName = ticket.status();
contribution.jiraIssueUrl = jiraIntegration.generateTicketUrl(ticket.key);
contribution.tcBranchName = branch;
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
index f67eb87..04c04fb 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/model/Version.java
@@ -28,7 +28,7 @@ package org.apache.ignite.ci.web.model;
public static final String GITHUB_REF = "https://github.com/apache/ignite-teamcity-bot";
/** TC Bot Version. */
- public static final String VERSION = "20190423";
+ public static final String VERSION = "20190427";
/** Java version, where Web App is running. */
public String javaVer;
diff --git a/ignite-tc-helper-web/src/main/webapp/js/prs-1.1.js b/ignite-tc-helper-web/src/main/webapp/js/prs-1.1.js
index 924efcf..a80622f 100644
--- a/ignite-tc-helper-web/src/main/webapp/js/prs-1.1.js
+++ b/ignite-tc-helper-web/src/main/webapp/js/prs-1.1.js
@@ -28,6 +28,7 @@ function drawTable(srvId, element) {
" <th>...</th>\n" +
" <th>.</th>\n" +
" <th>.</th>\n" +
+ " <th>.</th>\n" +
" </tr>\n" +
" </thead>\n" +
" </table>\n");
@@ -152,6 +153,18 @@ function showContributionsTable(result, srvId, suiteId) {
}
},
{
+ "data": "jiraStatusName",
+ title: "JIRA Status",
+ "render": function (data, type, row, meta) {
+ if (type === 'display') {
+ if (data != null && row.jiraIssueUrl != null)
+ data = "<a href='" + row.jiraIssueUrl + "'>" + data + "</a>";
+ }
+
+ return data;
+ }
+ },
+ {
"data": "tcBranchName",
title: "Resolved Branch Name",
"render": function (data, type, row, meta) {