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
commit 5966c69ca8cbe12f67306a97ad13ceb25ad5b23b Author: Dmitrii Ryabov <[email protected]> AuthorDate: Mon Sep 17 19:52:47 2018 +0300 Different input possibilities. - Fixes #11. Signed-off-by: Dmitriy Pavlov <[email protected]> --- .../main/java/org/apache/ignite/ci/TcHelper.java | 7 +++- .../apache/ignite/ci/observer/ObserverTask.java | 2 +- .../apache/ignite/ci/web/rest/TriggerBuild.java | 13 +++--- .../ci/web/rest/monitoring/MonitoringService.java | 1 - ignite-tc-helper-web/src/main/webapp/services.html | 46 +++++++++++++++++----- 5 files changed, 49 insertions(+), 20 deletions(-) diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java index 02da6ca..641c9db 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/TcHelper.java @@ -180,6 +180,10 @@ public class TcHelper implements ITcHelper { ) { try (IAnalyticsEnabledTeamcity teamcity = server(srvId, prov)) { List<BuildRef> builds = teamcity.getFinishedBuildsIncludeSnDepFailed(buildTypeId, branchForTc); + + if (builds.isEmpty()) + return false; + BuildRef build = builds.get(builds.size() - 1); String comment; @@ -193,9 +197,8 @@ public class TcHelper implements ITcHelper { return false; } - if ("finished".equals(build.state)) { + if ("finished".equals(build.state)) return teamcity.sendJiraComment(ticket, comment); - } return false; } diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java index aa3c2f5..fcc1e86 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/ObserverTask.java @@ -48,7 +48,7 @@ public class ObserverTask extends TimerTask { try (IAnalyticsEnabledTeamcity teamcity = helper.server(info.srvId, info.prov)) { Build build = teamcity.getBuild(info.build.getId()); - if (!build.state.equals("finished")) + if (!"finished".equals(build.state)) continue; } diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java index 19077f9..e844300 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java @@ -36,6 +36,7 @@ import org.apache.ignite.ci.user.ICredentialsProv; import org.apache.ignite.ci.web.CtxListener; import org.apache.ignite.ci.web.rest.login.ServiceUnauthorizedException; import org.apache.ignite.ci.web.model.SimpleResult; +import org.apache.ignite.internal.util.typedef.F; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -73,7 +74,7 @@ public class TriggerBuild { jiraRes = observeJira(srvId, branchForTc, ticketId, helper, teamcity, build, prov); } - return new SimpleResult("Tests started." + (!jiraRes.equals("") ? "<br>" + jiraRes : "")); + return new SimpleResult("Tests started." + (!jiraRes.isEmpty() ? "<br>" + jiraRes : "")); } @GET @@ -112,7 +113,7 @@ public class TriggerBuild { ticketId = getTicketId(pr); - if (ticketId.equals("")) { + if (ticketId.isEmpty()) { jiraRes = "JIRA ticket can't be commented - " + "PR title \"" + pr.getTitle() + "\" should starts with \"IGNITE-XXXX\"." + " Please, rename PR according to the" + @@ -124,10 +125,10 @@ public class TriggerBuild { } if (helper.notifyJira(srvId, prov, suiteId, branchForTc, "ignite-" + ticketId)) - return new SimpleResult("JIRA commented." + (!jiraRes.equals("") ? jiraRes : "")); + return new SimpleResult("JIRA commented." + (!jiraRes.isEmpty() ? jiraRes : "")); else // TODO Write catched exceptions to the response. - return new SimpleResult("JIRA wasn't commented." + (!jiraRes.equals("") ? "<br>" + jiraRes : "")); + return new SimpleResult("JIRA wasn't commented." + (!jiraRes.isEmpty() ? "<br>" + jiraRes : "")); } /** @@ -149,12 +150,12 @@ public class TriggerBuild { Build build, ICredentialsProv prov ) { - if (ticketId == null || ticketId.equals("")) { + if (F.isEmpty(ticketId)) { PullRequest pr = teamcity.getPullRequest(branchForTc); ticketId = getTicketId(pr); - if (ticketId.equals("")) { + if (ticketId.isEmpty()) { return "JIRA ticket will not be notified after the tests are completed - " + "PR title \"" + pr.getTitle() + "\" should starts with \"IGNITE-XXXX\"." + " Please, rename PR according to the" + diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/monitoring/MonitoringService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/monitoring/MonitoringService.java index fa19e93..0a25b7b 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/monitoring/MonitoringService.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/monitoring/MonitoringService.java @@ -29,7 +29,6 @@ import javax.ws.rs.core.MediaType; import java.util.Comparator; import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; import java.util.stream.Stream; diff --git a/ignite-tc-helper-web/src/main/webapp/services.html b/ignite-tc-helper-web/src/main/webapp/services.html index 443f2e3..839ff3d 100644 --- a/ignite-tc-helper-web/src/main/webapp/services.html +++ b/ignite-tc-helper-web/src/main/webapp/services.html @@ -56,7 +56,7 @@ function showSuitesForTeamCityRunData(result) { res += "Server: <input type='text' name='serverId' value='" + chainAtServer.serverId + "' readonly>"; res += "Chain: <input type='text' name='suiteId' value='" + chainAtServer.suiteId + "' readonly>"; res += "Branch: <input type='text' name='branchForTc' required> "; - res += "Ticket#: <input type='text' name='ticketId'>"; + res += "Ticket: <input type='text' name='ticketId'>"; res += "<button name='jira' type='button' onclick='trigBuild(\"tests\")'>Start tests</button>"; res += "<button name='jira' onclick='trigBuild(\"tests+jira\")'>Start tests and comment JIRA ticket on ready</button>"; //res += "<button name='git' onclick='trigBuild(\"tests+jira\")'>Start tests and comment GitHub PR on ready</button>"; @@ -86,7 +86,7 @@ function showCommentJiraForm(result) { res += "Server: <input type='text' name='serverId' value=" + chainAtServer.serverId +" readonly>" ; res += "Chain: <input type='text' name='suiteId' value='" + chainAtServer.suiteId + "' readonly>"; res += "Branch: <input type='text' name='branchForTc' required> "; - res += "Ticket #<input type='text' name='ticketId'> "; + res += "Ticket: <input type='text' name='ticketId'> "; res += "<button name='action' onclick='notifyJira()'>Notify</button>"; } @@ -102,10 +102,10 @@ function trigBuild(trigCase) { var srvId = fields.namedItem("serverId").value; var suiteId = fields.namedItem("suiteId").value; - var branchName = fields.namedItem("branchForTc").value; - var ticketId = fields.namedItem("ticketId").value; + var branchName = branchForTc(fields.namedItem("branchForTc").value); + var ticketId = jiraTicketNumber(fields.namedItem("ticketId").value); - triggerBuild(srvId, suiteId, branchName, false, trigCase != "tests", ticketId) + triggerBuild(srvId, suiteId, branchName, false, trigCase !== "tests", ticketId) } /** @@ -116,14 +116,43 @@ function notifyJira() { var srvId = fields.namedItem("serverId").value; var suiteId = fields.namedItem("suiteId").value; - var branchName = fields.namedItem("branchForTc").value; - var ticketId = fields.namedItem("ticketId").value; + var branchName = branchForTc(fields.namedItem("branchForTc").value); + var ticketId = jiraTicketNumber(fields.namedItem("ticketId").value); commentJira(srvId, suiteId, branchName, ticketId) } + +/** + * Converts PR number to branch for TeamCity. + * + * @param pr - Pull Request number. + * @returns {String} Branch for TeamCity. + */ +function branchForTc(pr) { + var regExpr = /(\d*)/i; + + if (regExpr.exec(pr)[0] === pr) + return "pull/" + regExpr.exec(pr)[0] + "/head"; + + return pr; +} + +/** + * Converts JIRA ticket full name to the tickets number. + * + * @param ticket - JIRA ticket. + * @returns {string} JIRA ticket number. + */ +function jiraTicketNumber(ticket) { + var regExpr = /(ignite-)?(\d*)/i; + + return regExpr.exec(ticket)[2]; +} </script> </head> <body> +<div id="loadStatus"></div> +<div><a href=".">Home</a><br></div> TeamCity Run All: <br> <div id="suitesForRunAll"></div> @@ -141,9 +170,6 @@ Notify JIRA: <br> </form> </div> <br>--> -<div id="loadStatus"></div> -<div><a href=".">Home</a><br></div> -<div id="divFailures"></div> <div id="version"></div>
