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 2018/10/10 17:30:46 UTC
[ignite-teamcity-bot] branch pr-check-stages-in-ui updated: Steps
to get visa adding to UI: Trigger build stage and buttons was supported
This is an automated email from the ASF dual-hosted git repository.
dpavlov pushed a commit to branch pr-check-stages-in-ui
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
The following commit(s) were added to refs/heads/pr-check-stages-in-ui by this push:
new 0a6bc1a Steps to get visa adding to UI: Trigger build stage and buttons was supported
0a6bc1a is described below
commit 0a6bc1aee5d203c5f22059682ff4d865817c948c
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Wed Oct 10 20:30:45 2018 +0300
Steps to get visa adding to UI: Trigger build stage and buttons was supported
---
.../ci/tcbot/visa/ContributionCheckStatus.java | 6 +++-
.../tcbot/visa/TcBotTriggerAndSignOffService.java | 39 +++++++++++++++++-----
.../apache/ignite/ci/tcmodel/hist/BuildRef.java | 12 +++++++
.../ci/teamcity/ignited/ITeamcityIgnited.java | 2 +-
.../ignite/ci/web/rest/visa/TcBotVisaService.java | 17 ----------
ignite-tc-helper-web/src/main/webapp/js/prs-1.0.js | 31 ++++++++++++-----
6 files changed, 72 insertions(+), 35 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 538fcc7..55b0c3f 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
@@ -22,5 +22,9 @@ package org.apache.ignite.ci.tcbot.visa;
@SuppressWarnings("PublicField") public class ContributionCheckStatus {
public int queuedBuilds;
public int runningBuilds;
- public String finishedRunAllForBranch;
+ /** Branch with finished run all results, null if run all is running or in case there was no run alls at all. */
+ public String branchWithFinishedRunAll;
+
+ /** Resolved run all branch: Some branch probably with finished or queued builds in in, or default pull/nnnn/head. */
+ public String resolvedBranch;
}
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 3a4365a..b071fd6 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
@@ -19,9 +19,11 @@ package org.apache.ignite.ci.tcbot.visa;
import com.google.common.base.Strings;
import com.google.inject.Provider;
+import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
+import javax.annotation.Nonnull;
import javax.inject.Inject;
import javax.ws.rs.QueryParam;
import org.apache.ignite.ci.tcmodel.hist.BuildRef;
@@ -190,8 +192,7 @@ public class TcBotTriggerAndSignOffService {
}
public List<ContributionToCheck> getContributionsToCheck(String srvId) {
- IGitHubConnIgnited gitHubConn = gitHubConnIgnitedProvider.server(srvId);
- List<PullRequest> requests = gitHubConn.getPullRequests();
+ List<PullRequest> requests = gitHubConnIgnitedProvider.server(srvId).getPullRequests();
if (requests == null)
return null;
@@ -213,21 +214,23 @@ public class TcBotTriggerAndSignOffService {
}).collect(Collectors.toList());
}
- @Nullable public String findBranchForPr(String srvId, ICredentialsProv prov, String suiteId, String prId) {
+ @Nonnull private List<BuildRef> findRunAllsForPr(String srvId, ICredentialsProv prov, String suiteId, String prId) {
ITeamcityIgnited srv = teamcityIgnitedProvider.server(srvId, prov);
String branchName = branchForTcA(prId);
List<BuildRef> buildHist = srv.getBuildHistory(suiteId, branchName);
if (!buildHist.isEmpty())
- return buildHist.get(0).branchName();
+ return buildHist;
+
+ //todo multibranch requestst
buildHist = srv.getBuildHistory(suiteId, branchForTcB(prId));
if (!buildHist.isEmpty())
- return buildHist.get(0).branchName();
+ return buildHist;
- return null;
+ return Collections.emptyList();
}
String branchForTcA(String prId) {
@@ -244,10 +247,30 @@ public class TcBotTriggerAndSignOffService {
* @param suiteId Suite id.
* @param prId Pr id.
*/
- public ContributionCheckStatus contributionStatus(String srvId, ICredentialsProv prov, String suiteId, String prId) {
+ public ContributionCheckStatus contributionStatus(String srvId, ICredentialsProv prov, String suiteId,
+ String prId) {
ContributionCheckStatus status = new ContributionCheckStatus();
- status.finishedRunAllForBranch = findBranchForPr(srvId, prov, suiteId, prId);
+ List<BuildRef> allRunAlls = findRunAllsForPr(srvId, prov, suiteId, prId);
+
+ boolean finishedRunAllPresent = allRunAlls.stream().anyMatch(BuildRef::isFinished);
+
+ status.branchWithFinishedRunAll = finishedRunAllPresent ? allRunAlls.get(0).branchName : null;
+
+ if (status.branchWithFinishedRunAll == null) {
+ if (!allRunAlls.isEmpty())
+ status.resolvedBranch = allRunAlls.get(0).branchName;
+ else
+ status.resolvedBranch = branchForTcA(prId);
+ }
+ else
+ //todo take into account running/queued
+ status.resolvedBranch = status.branchWithFinishedRunAll;
+
+
+ //todo take into accounts not only run alls:
+ status.queuedBuilds = (int)allRunAlls.stream().filter(BuildRef::isNotCancelled).filter(BuildRef::isQueued).count();
+ status.runningBuilds = (int)allRunAlls.stream().filter(BuildRef::isNotCancelled).filter(BuildRef::isRunning).count();
return status;
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcmodel/hist/BuildRef.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcmodel/hist/BuildRef.java
index 6d35959..10d312d 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcmodel/hist/BuildRef.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcmodel/hist/BuildRef.java
@@ -170,4 +170,16 @@ public class BuildRef extends AbstractRef {
public String state() {
return state;
}
+
+ public boolean isFinished() {
+ return STATE_FINISHED.equals(state());
+ }
+
+ public boolean isQueued() {
+ return STATE_QUEUED.equals(state());
+ }
+
+ public boolean isRunning() {
+ return STATE_RUNNING.equals(state());
+ }
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java
index 67ac302..4bdd2cf 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java
@@ -27,7 +27,7 @@ public interface ITeamcityIgnited {
/**
* @param buildTypeId
* @param branchName
- * @return list of builds in history
+ * @return list of builds in history, includes all statuses: queued, running, etc
*/
public List<BuildRef> getBuildHistory(
@Nullable String buildTypeId,
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/visa/TcBotVisaService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/visa/TcBotVisaService.java
index a78ee90..5bc1cbf 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/visa/TcBotVisaService.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/visa/TcBotVisaService.java
@@ -73,21 +73,4 @@ public class TcBotVisaService {
return instance.contributionStatus(srvId, prov, suiteId, prId);
}
-
- @Deprecated
- @GET
- @Path("findBranchForPr")
- public SimpleResult findBranchForPr(@Nullable @QueryParam("serverId") String srvId,
- @Nonnull @QueryParam("suiteId") String suiteId,
- @QueryParam("prId") String prId) {
- ICredentialsProv prov = ICredentialsProv.get(req);
- if (!prov.hasAccess(srvId))
- throw ServiceUnauthorizedException.noCreds(srvId);
-
-
- TcBotTriggerAndSignOffService instance = CtxListener.getInjector(ctx)
- .getInstance(TcBotTriggerAndSignOffService.class);
-
- return new SimpleResult(instance.findBranchForPr(srvId, prov, suiteId, prId));
- }
}
diff --git a/ignite-tc-helper-web/src/main/webapp/js/prs-1.0.js b/ignite-tc-helper-web/src/main/webapp/js/prs-1.0.js
index 06e0f4d..62d142e 100644
--- a/ignite-tc-helper-web/src/main/webapp/js/prs-1.0.js
+++ b/ignite-tc-helper-web/src/main/webapp/js/prs-1.0.js
@@ -151,7 +151,7 @@ function formatContributionDetails(row, srvId, suiteId) {
" <th><span class='visaStage' id='visaStage_1_" + prId + "'></span></th>\n" +
" <th><span class='visaStage' id='visaStage_2_" + prId + "'></span></th>\n" +
" <th><span class='visaStage' id='visaStage_3_" + prId + "'></span></th>\n" +
- " <th><span class='visaStage' id='visaStage_4_" + prId + "'></span></th>\n" +
+ // " <th><span class='visaStage' id='visaStage_4_" + prId + "'></span></th>\n" +
//todo validityCheck;" <th><span class='visaStage' id='visaStage_5_" + prId + "'></span></th>\n" +
" </tr>\n";
@@ -160,17 +160,18 @@ function formatContributionDetails(row, srvId, suiteId) {
" <td>PR with issue name</td>\n" +
" <td>Build is triggered</td>\n" +
" <td>Results ready</td>\n" +
- " <td>JIRA comment</td>\n" +
+ // " <td>JIRA comment</td>\n" +
//todo " <td>Validity check</td>\n" +
" </tr>\n";
//action for stage
res += " <tr>\n" +
- " <td>Edit PR: "+"<a href='" + row.prHtmlUrl + "'>#" + row.prNumber + "</a>"+"</td>\n" +
+ " <td>Edit PR: " + "<a href='" + row.prHtmlUrl + "'>#" + row.prNumber + "</a>" + "</td>\n" +
" <td id='triggerBuildFor" + prId + "'>Loading builds...</td>\n" +
" <td id='showResultFor" + prId + "'>Loading builds...</td>\n" +
" </tr>" +
" </table>";
+
res += "</div>";
@@ -180,21 +181,35 @@ function formatContributionDetails(row, srvId, suiteId) {
"&prId=" + prId,
success:
function (result) {
- let branchName = result.finishedRunAllForBranch;
+ let finishedBranch = result.branchWithFinishedRunAll;
let tdForPr = $('#showResultFor' + prId);
- let buildIsCompleted = isDefinedAndFilled(branchName);
+ let buildIsCompleted = isDefinedAndFilled(finishedBranch);
if (buildIsCompleted) {
- tdForPr.html("<a id='link_" + prId + "' href='" + prShowHref(srvId, suiteId, branchName) + "'>" +
- "<button id='show_" + prId + "'>Show " + branchName + " report</button></a>");
+ tdForPr.html("<a id='link_" + prId + "' href='" + prShowHref(srvId, suiteId, finishedBranch) + "'>" +
+ "<button id='show_" + prId + "'>Show " + finishedBranch + " report</button></a>");
} else {
tdForPr.html("No builds, please trigger " + suiteId);
}
+ let hasQueued = result.queuedBuilds > 0 || result.runningBuilds > 0;
let jiraIssue = isDefinedAndFilled(row.jiraIssueId);
showStageResult(1, prId, jiraIssue, !jiraIssue);
- showStageResult(2, prId, buildIsCompleted, false);
+ let noNeedToTrigger = hasQueued || buildIsCompleted;
+ showStageResult(2, prId, noNeedToTrigger, false);
showStageResult(3, prId, buildIsCompleted, false);
+
+ if(isDefinedAndFilled(result.resolvedBranch)) {
+ var trig ="";
+ trig+= "<button onClick='triggerBuilds(\"" + srvId + "\", \"" + suiteId + "\", \"" +
+ result.resolvedBranch + "\", false, false)'" ;
+
+ if(noNeedToTrigger) {
+ trig+=" class='disabledbtn'";
+ }
+ trig+=">Trigger build</button>";
+ $('#triggerBuildFor' + prId).html(trig);
+ }
}
});
return res;