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/13 17:14:29 UTC

[ignite-teamcity-bot] branch ignite-11740 updated: IGNITE-11740: Add search for full branch name in contributions table, add mode branch preffered

This is an automated email from the ASF dual-hosted git repository.

dpavlov pushed a commit to branch ignite-11740
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git


The following commit(s) were added to refs/heads/ignite-11740 by this push:
     new 78dbd82  IGNITE-11740: Add search for full branch name in contributions table, add mode branch preffered
78dbd82 is described below

commit 78dbd82cf32424e597112b3b282f1d6d06387eca
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Sat Apr 13 20:14:23 2019 +0300

    IGNITE-11740: Add search for full branch name in contributions table, add mode branch preffered
---
 .../ignite/ci/tcbot/visa/ContributionToCheck.java  |  5 +-
 .../tcbot/visa/TcBotTriggerAndSignOffService.java  | 77 ++++++++++++----------
 2 files changed, 48 insertions(+), 34 deletions(-)

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 c4e1859..ecfcb5b 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
@@ -41,7 +41,10 @@ package org.apache.ignite.ci.tcbot.visa;
     /** Pr head commit hash (first 7 hexes). */
     public String prHeadCommit;
 
-    /** Branch Name for team city */
+    /**
+     * Branch Name for Team City. Always a branch for PR_less contribution,
+     * for PRs filled only if there are builds found for TC.
+     */
     public String tcBranchName;
 
     /** JIRA issue without server URL, but with project name */
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 d661891..1a5215f 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
@@ -356,47 +356,58 @@ public class TcBotTriggerAndSignOffService {
         IJiraIgnited jiraIntegration = jiraIgnProv.server(srvCodeOrAlias);
 
         IGitHubConnIgnited gitHubConnIgnited = gitHubConnIgnitedProvider.server(srvCodeOrAlias);
-        List<PullRequest> requests = gitHubConnIgnited.getPullRequests();
-        if (requests == null)
-            return null;
 
-        Set<Ticket> tickets = jiraIntegration.getTickets();
+        ITeamcityIgnited tcIgn = tcIgnitedProv.server(srvCodeOrAlias, credsProv);
 
-        List<String> branches = gitHubConnIgnited.getBranches();
+        List<PullRequest> prs = gitHubConnIgnited.getPullRequests();
 
-        List<Ticket> activeTickets = tickets.stream().filter(Ticket::isActiveContribution).collect(Collectors.toList());
+        Set<Ticket> tickets = jiraIntegration.getTickets();
 
         IJiraServerConfig jiraCfg = jiraIntegration.config();
         IGitHubConfig ghCfg = gitHubConnIgnited.config();
 
-        List<ContributionToCheck> contribsList = requests.stream().map(pr -> {
-            ContributionToCheck check = new ContributionToCheck();
-            check.prNumber = pr.getNumber();
-            check.prTitle = pr.getTitle();
-            check.prHtmlUrl = pr.htmlUrl();
-            check.prHeadCommit = pr.lastCommitShaShort();
-            check.prTimeUpdate = pr.getTimeUpdate();
-
-            GitHubUser user = pr.gitHubUser();
-            if (user != null) {
-                check.prAuthor = user.login();
-                check.prAuthorAvatarUrl = user.avatarUrl();
-            }
-            else {
-                check.prAuthor = "";
-                check.prAuthorAvatarUrl = "";
-            }
+        String defBtForTcServ = findDefaultBuildType(srvCodeOrAlias);
 
-            check.jiraIssueId = ticketMatcher.resolveTicketIdForPrBasedContrib(tickets, pr, jiraCfg);
+        List<ContributionToCheck> contribsList = new ArrayList<>();
 
-            if (!Strings.isNullOrEmpty(check.jiraIssueId)
-                    && jiraCfg.getUrl() != null)
-                check.jiraIssueUrl = jiraIntegration.generateTicketUrl(check.jiraIssueId);
+        if (prs != null) {
+            prs.forEach(pr -> {
+                ContributionToCheck c = new ContributionToCheck();
 
-            return check;
-        }).collect(Collectors.toList());
+                c.prNumber = pr.getNumber();
+                c.prTitle = pr.getTitle();
+                c.prHtmlUrl = pr.htmlUrl();
+                c.prHeadCommit = pr.lastCommitShaShort();
+                c.prTimeUpdate = pr.getTimeUpdate();
 
-        ITeamcityIgnited tcIgn = tcIgnitedProv.server(srvCodeOrAlias, credsProv);
+                GitHubUser user = pr.gitHubUser();
+                if (user != null) {
+                    c.prAuthor = user.login();
+                    c.prAuthorAvatarUrl = user.avatarUrl();
+                } else {
+                    c.prAuthor = "";
+                    c.prAuthorAvatarUrl = "";
+                }
+
+                c.jiraIssueId = ticketMatcher.resolveTicketIdForPrBasedContrib(tickets, pr, jiraCfg);
+
+                if (!Strings.isNullOrEmpty(c.jiraIssueId)
+                        && jiraCfg.getUrl() != null)
+                    c.jiraIssueUrl = jiraIntegration.generateTicketUrl(c.jiraIssueId);
+
+                findBuildsForPr(defBtForTcServ, Integer.toString(pr.getNumber()), gitHubConnIgnited, tcIgn)
+                        .stream()
+                        .map(buildRefCompacted -> buildRefCompacted.branchName(compactor))
+                        .findAny()
+                        .ifPresent(bName -> c.tcBranchName = bName);
+
+                contribsList.add(c);
+            });
+        }
+
+        List<String> branches = gitHubConnIgnited.getBranches();
+
+        List<Ticket> activeTickets = tickets.stream().filter(Ticket::isActiveContribution).collect(Collectors.toList());
 
         activeTickets.forEach(ticket -> {
             String branch = ticketMatcher.resolveTcBranchForPrLess(ticket,
@@ -406,10 +417,9 @@ public class TcBotTriggerAndSignOffService {
             if (Strings.isNullOrEmpty(branch))
                 return; // nothing to do if branch was not resolved
 
-            String defBtForMaster = findDefaultBuildType(srvCodeOrAlias);
 
             if (!branches.contains(branch)
-                && tcIgn.getAllBuildsCompacted(defBtForMaster, branch).isEmpty())
+                && tcIgn.getAllBuildsCompacted(defBtForTcServ, branch).isEmpty())
                 return; //Skipping contributions without builds
 
             ContributionToCheck contribution = new ContributionToCheck();
@@ -592,7 +602,8 @@ public class TcBotTriggerAndSignOffService {
      * @param srvIdOrAlias Server id. May be weak reference to TC
      * @return Some build type included into tracked branches with default branch.
      */
-    @NotNull public String findDefaultBuildType(String srvIdOrAlias) {
+    @NotNull
+    private String findDefaultBuildType(String srvIdOrAlias) {
         StringBuilder buildTypeId = new StringBuilder();
 
         ITcServerConfig tcCfg = cfg.getTeamcityConfig(srvIdOrAlias);