in ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java [404:516]
public List<ContributionToCheck> getContributionsToCheck(String srvCodeOrAlias,
ITcBotUserCreds credsProv) {
IJiraIgnited jiraIntegration = jiraIgnProv.server(srvCodeOrAlias);
IGitHubConnIgnited gitHubConnIgnited = gitHubConnIgnitedProvider.server(srvCodeOrAlias);
ITeamcityIgnited tcIgn = tcIgnitedProv.server(srvCodeOrAlias, credsProv);
List<PullRequest> prs = gitHubConnIgnited.getPullRequests();
Set<Ticket> tickets = jiraIntegration.getTickets();
IJiraServerConfig jiraCfg = jiraIntegration.config();
IGitHubConfig ghCfg = gitHubConnIgnited.config();
String defBtForTcServ = findDefaultBuildType(srvCodeOrAlias);
List<ContributionToCheck> contribsList = new ArrayList<>();
if (prs != null) {
prs.forEach(pr -> {
ContributionToCheck c = new ContributionToCheck();
c.prNumber = pr.getNumber();
c.prTitle = pr.getTitle();
c.prHtmlUrl = pr.htmlUrl();
c.prHeadCommit = pr.lastCommitShaShort();
c.prTimeUpdate = pr.getTimeUpdate();
GitHubUser user = pr.gitHubUser();
if (user != null) {
c.prAuthor = user.login();
c.prAuthorAvatarUrl = user.avatarUrl();
}
else {
c.prAuthor = "";
c.prAuthorAvatarUrl = "";
}
Ticket ticket = ticketMatcher.resolveTicketIdForPrBasedContrib(tickets, jiraCfg, pr.getTitle());
if (ticket == null || ticket.id == 0) {
if (pr.head() != null && pr.head().ref() != null)
ticket = ticketMatcher.resolveTicketIdForPrBasedContrib(tickets, jiraCfg, pr.head().ref());
}
c.jiraIssueId = ticket == null ? null : ticket.key;
c.jiraStatusName = ticket == null ? null : JiraTicketStatusCode.text(ticket.status());
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 -> JiraTicketStatusCode.isActiveContribution(ticket.status()))
.collect(Collectors.toList());
activeTickets.forEach(ticket -> {
String branch = ticketMatcher.resolveTcBranchForPrLess(ticket,
jiraCfg,
ghCfg);
if (Strings.isNullOrEmpty(branch))
return; // nothing to do if branch was not resolved
if (!branches.contains(branch)
&& tcIgn.getAllBuildsCompacted(defBtForTcServ, branch).isEmpty())
return; //Skipping contributions without builds
ContributionToCheck contribution = new ContributionToCheck();
contribution.jiraIssueId = ticket.key;
contribution.jiraStatusName = JiraTicketStatusCode.text(ticket.status());
contribution.jiraIssueUrl = jiraIntegration.generateTicketUrl(ticket.key);
contribution.tcBranchName = branch;
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.prHeadCommit = "";
contribution.prTimeUpdate = ""; //todo ticket updateTime
contribution.prAuthor = "";
contribution.prAuthorAvatarUrl = "";
contribsList.add(contribution);
});
return contribsList;
}