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/02/18 13:16:36 UTC

[ignite-teamcity-bot] branch master updated: IGNITE-11105 Fix for PR-less contributions in case JIRA tickets/branches mapping is used

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 846ae2b  IGNITE-11105 Fix for PR-less contributions in case JIRA tickets/branches mapping is used
846ae2b is described below

commit 846ae2b3bfd26c145b7f80ae1277d895794708a7
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Mon Feb 18 16:15:47 2019 +0300

    IGNITE-11105 Fix for PR-less contributions in case JIRA tickets/branches mapping is used
---
 .../ci/tcbot/visa/ContributionCheckStatus.java     |  2 +-
 .../ignite/ci/tcbot/visa/ContributionToCheck.java  |  6 ++-
 .../tcbot/visa/TcBotTriggerAndSignOffService.java  | 47 +++++++++++++++++-----
 .../org/apache/ignite/ci/web/model/Version.java    |  2 +-
 ignite-tc-helper-web/src/main/webapp/js/prs-1.1.js | 16 ++++++--
 5 files changed, 55 insertions(+), 18 deletions(-)

diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionCheckStatus.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionCheckStatus.java
index ba7e027..078a4f9 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionCheckStatus.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/ContributionCheckStatus.java
@@ -21,7 +21,7 @@ import java.util.List;
 
 /**
  * Status of contribution check details returned from server. UI model for displaying detailed {@link
- * ContributionToCheck} status.
+ * ContributionToCheck} status in relation to particular Run Configuration.
  */
 @SuppressWarnings("PublicField") public class ContributionCheckStatus {
     /** Queued builds. */
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 6238b23..2009c20 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
@@ -21,7 +21,11 @@ package org.apache.ignite.ci.tcbot.visa;
  * Full version is placed in {@link ContributionCheckStatus}.
  */
 @SuppressWarnings("PublicField") public class ContributionToCheck {
-    /** Pr number. Positive value implies PR number, negative value is for JIRA ticket for PR-less contributions. */
+    /**
+     * Pr number.
+     * Negative value imples branch number (with appropriate prefix from GH config), value from
+     * {@link #tcBranchName}.
+     */
     public Integer prNumber;
 
     /** Pr title. */
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 34f35a8..ddba3fd 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
@@ -41,13 +41,14 @@ import org.apache.ignite.ci.github.GitHubUser;
 import org.apache.ignite.ci.github.PullRequest;
 import org.apache.ignite.ci.github.ignited.IGitHubConnIgnited;
 import org.apache.ignite.ci.github.ignited.IGitHubConnIgnitedProvider;
-import org.apache.ignite.ci.jira.pure.Ticket;
 import org.apache.ignite.ci.jira.ignited.IJiraIgnited;
 import org.apache.ignite.ci.jira.ignited.IJiraIgnitedProvider;
+import org.apache.ignite.ci.jira.pure.Ticket;
 import org.apache.ignite.ci.observer.BuildObserver;
 import org.apache.ignite.ci.observer.BuildsInfo;
 import org.apache.ignite.ci.tcbot.ITcBotBgAuth;
 import org.apache.ignite.ci.tcbot.chain.PrChainsProcessor;
+import org.apache.ignite.ci.tcbot.conf.IGitHubConfig;
 import org.apache.ignite.ci.tcbot.conf.IJiraServerConfig;
 import org.apache.ignite.ci.tcbot.conf.ITcBotConfig;
 import org.apache.ignite.ci.tcmodel.mute.MuteInfo;
@@ -358,6 +359,9 @@ public class TcBotTriggerAndSignOffService {
 
         List<Ticket> paTickets = tickets.stream().filter(Ticket::isActiveContribution).collect(Collectors.toList());
 
+        IJiraServerConfig jiraCfg = jiraIntegration.config();
+        IGitHubConfig ghCfg = gitHubConnIgnited.config();
+
         List<ContributionToCheck> contribsList = requests.stream().map(pr -> {
             ContributionToCheck check = new ContributionToCheck();
             check.prNumber = pr.getNumber();
@@ -375,8 +379,6 @@ public class TcBotTriggerAndSignOffService {
                 check.prAuthorAvatarUrl = "";
             }
 
-            IJiraServerConfig jiraCfg = jiraIntegration.config();
-
             check.jiraIssueId = ticketMatcher.resolveTicketIdForPrBasedContrib(tickets, pr, jiraCfg);
 
             if (!Strings.isNullOrEmpty(check.jiraIssueId))
@@ -389,10 +391,10 @@ public class TcBotTriggerAndSignOffService {
 
         paTickets.forEach(ticket -> {
             String branch = ticketMatcher.resolveTcBranchForPrLess(ticket,
-                    jiraIntegration.config(),
-                    gitHubConnIgnited.config());
+                jiraCfg,
+                ghCfg);
 
-            if (branch == null)
+            if (Strings.isNullOrEmpty(branch))
                 return; // nothing to do if branch was not resolved
 
             String defBtForMaster = findDefaultBranchBuildType(tcIgn.serverId());
@@ -406,7 +408,17 @@ public class TcBotTriggerAndSignOffService {
             contribution.jiraIssueUrl = jiraIntegration.generateTicketUrl( ticket.key);
             contribution.tcBranchName = branch;
 
-            contribution.prNumber = -ticket.keyWithoutProject(jiraIntegration.config().projectCodeForVisa());
+            if(branch.startsWith(ghCfg.gitBranchPrefix())) {
+                String branchTc = branch.substring(ghCfg.gitBranchPrefix().length());
+
+                try {
+                    contribution.prNumber = - Integer.valueOf(branchTc);
+                }
+                catch (NumberFormatException e) {
+                    logger.error("PR less contribution has invalid branch name", e);
+                }
+            }
+
             contribution.prTitle = ticket.fields.summary;
             contribution.prHtmlUrl = "";
             contribution.prTimeUpdate = ""; //todo ticket updateTime
@@ -420,8 +432,17 @@ public class TcBotTriggerAndSignOffService {
         return contribsList;
     }
 
-    @Nonnull private List<BuildRefCompacted> findBuildsForPr(String suiteId, String prId,
-        IGitHubConnIgnited ghConn, ITeamcityIgnited srv) {
+    /**
+     * @param suiteId Suite id.
+     * @param prId Pr id from {@link ContributionToCheck#prNumber}. Negative value imples branch number for PR-less.
+     * @param ghConn Gh connection.
+     * @param srv TC Server connection.
+     */
+    @Nonnull
+    private List<BuildRefCompacted> findBuildsForPr(String suiteId,
+        String prId,
+        IGitHubConnIgnited ghConn,
+        ITeamcityIgnited srv) {
 
         List<BuildRefCompacted> buildHist = srv.getAllBuildsCompacted(suiteId, branchForTcDefault(prId, ghConn));
 
@@ -455,6 +476,10 @@ public class TcBotTriggerAndSignOffService {
         return Collections.emptyList();
     }
 
+    /**
+     * @param prId Pr id from {@link ContributionToCheck#prNumber}. Negative value imples branch number to be used for PR-less contributions.
+     * @param srv Github integration.
+     */
     private String branchForTcDefault(String prId, IGitHubConnIgnited srv) {
         Integer prNum = Integer.valueOf(prId);
         if (prNum < 0)
@@ -474,7 +499,7 @@ public class TcBotTriggerAndSignOffService {
     /**
      * @param srvId Server id.
      * @param prov Prov.
-     * @param prId Pr id.
+     * @param prId Pr id from {@link ContributionToCheck#prNumber}. Negative value imples branch number (with appropriate prefix from GH config).
      */
     public Set<ContributionCheckStatus> contributionStatuses(String srvId, ICredentialsProv prov,
         String prId) {
@@ -540,7 +565,7 @@ public class TcBotTriggerAndSignOffService {
      * @param srvId Server id.
      * @param suiteId Suite id.
      * @param builds Build references.
-     * @param ghConn
+     * @param ghConn GitHub integration.
      */
     public ContributionCheckStatus contributionStatus(String srvId, String suiteId, List<BuildRefCompacted> builds,
         ITeamcityIgnited teamcity, IGitHubConnIgnited ghConn, String prId) {
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 7b7e934..e892e0e 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 = "20190214";
+    public static final String VERSION = "20190218";
 
     /** 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 1bb3c0f..d9e14e2 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
@@ -323,10 +323,10 @@ function formatContributionDetails(row, srvId) {
 
                 let select = $("#selectChain_" + prId);
 
-                select.change(function() {
-                    let pr = prs.get(prId),
-                        selectedOption = $("#selectChain_" + prId + " option:selected").text(),
-                        buildIsCompleted = select.val() === 'true';
+                select.change(function () {
+                    let pr = prs.get(prId);
+                    let selectedOption = $("#selectChain_" + prId + " option:selected").text();
+                    let buildIsCompleted = select.val() === 'true';
 
                     showContributionStatus(pr.get(selectedOption), prId, row, srvId, selectedOption, buildIsCompleted);
                 });
@@ -364,6 +364,14 @@ function repaintLater(srvId) {
     }, 3000);
 }
 
+/**
+ *
+ * @param status contribution status related to selected run-configuration.
+ * @param prId
+ * @param row
+ * @param srvId
+ * @param suiteIdSelected
+ */
 function showContributionStatus(status, prId, row, srvId, suiteIdSelected) {
     let tdForPr = $('#showResultFor' + prId);