This is an automated email from the ASF dual-hosted git repository. dpavlov pushed a commit to branch ignite-11105-alias in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
The following commit(s) were added to refs/heads/ignite-11105-alias by this push: new e720b20 IGNITE-11105 Support Teamcity servers aliases: JIRA ticket for comment and for branch detection separation e720b20 is described below commit e720b2025f3137e6587cedc6f136a67bce9742d2 Author: Dmitriy Pavlov <dpav...@apache.org> AuthorDate: Tue Jan 29 22:14:43 2019 +0300 IGNITE-11105 Support Teamcity servers aliases: JIRA ticket for comment and for branch detection separation --- .../src/main/java/org/apache/ignite/ci/HelperConfig.java | 1 + .../org/apache/ignite/ci/jira/ignited/IJiraIgnited.java | 5 +++-- .../org/apache/ignite/ci/jira/ignited/JiraIgnited.java | 6 +++--- .../org/apache/ignite/ci/jira/ignited/JiraTicketDao.java | 14 +++++++------- .../org/apache/ignite/ci/jira/ignited/JiraTicketSync.java | 6 +++--- .../org/apache/ignite/ci/jira/ignited/TicketCompacted.java | 13 +++++++------ .../org/apache/ignite/ci/jira/pure/IJiraIntegration.java | 5 ++--- .../src/main/java/org/apache/ignite/ci/jira/pure/Jira.java | 6 ++++++ .../main/java/org/apache/ignite/ci/jira/pure/Ticket.java | 7 +++++-- .../org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java | 5 +++++ .../org/apache/ignite/ci/tcbot/conf/JiraServerConfig.java | 11 +++++++++++ .../ci/tcbot/visa/TcBotTriggerAndSignOffService.java | 3 ++- 12 files changed, 55 insertions(+), 27 deletions(-) diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/HelperConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/HelperConfig.java index 11501e5..b0f7e63 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/HelperConfig.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/HelperConfig.java @@ -63,6 +63,7 @@ public class HelperConfig { public static final String JIRA_URL = "jira.url"; /** Prefix for JIRA ticket names. */ + @Deprecated public static final String JIRA_TICKET_TEMPLATE = "jira.ticket_template"; /** Slack authorization token property name. */ diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/IJiraIgnited.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/IJiraIgnited.java index fa88d26..27af6cf 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/IJiraIgnited.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/IJiraIgnited.java @@ -28,12 +28,13 @@ public interface IJiraIgnited { /** * */ + @Deprecated @NotNull public String ticketPrefix(); /** - * + * JIRA project code for filtering out tickets and for adding VISA (JIRA comments). */ - @NotNull public String projectName(); + @NotNull public String projectCodeForVisa(); /** diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java index 2a84f36..3477346 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraIgnited.java @@ -62,15 +62,15 @@ class JiraIgnited implements IJiraIgnited { } /** {@inheritDoc} */ - @NotNull @Override public String projectName() { - return jira.projectName(); + @NotNull @Override public String projectCodeForVisa() { + return jira.projectCodeForVisa(); } /** {@inheritDoc} */ @Override public Set<Ticket> getTickets() { jiraTicketSync.ensureActualizeJiraTickets(srvId); - return jiraTicketDao.getTickets(srvIdMaskHigh, ticketPrefix()); + return jiraTicketDao.getTickets(srvIdMaskHigh, projectCodeForVisa()); } /** {@inheritDoc} */ diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketDao.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketDao.java index 7d87f5b..ce93f96 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketDao.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketDao.java @@ -60,10 +60,10 @@ public class JiraTicketDao { /** * @param srvIdMaskHigh Server id mask high. - * @param ticketPrefix Fixed prefix for JIRA tickets. + * @param projectCode project code. WIth delim gives Fixed prefix for JIRA tickets. * @return Jira tickets. */ - public Set<Ticket> getTickets(int srvIdMaskHigh, String ticketPrefix) { + public Set<Ticket> getTickets(int srvIdMaskHigh, String projectCode) { Preconditions.checkNotNull(jiraCache, "init() was not called"); long srvId = (long) srvIdMaskHigh << 32; @@ -71,7 +71,7 @@ public class JiraTicketDao { for (Cache.Entry<Long, TicketCompacted> entry : jiraCache) { if ((entry.getKey() & srvId) == srvId) - res.add(entry.getValue().toTicket(compactor, ticketPrefix)); + res.add(entry.getValue().toTicket(compactor, projectCode)); } return res; @@ -92,11 +92,11 @@ public class JiraTicketDao { * Save small part of loaded mutes. * @param srvIdMaskHigh Server id mask high. * @param chunk Chunk. - * @param ticketPrefix Ticket name template. + * @param projectCode Project code for contributions listing and for comments. * @return number of tickets totally saved. */ @AutoProfiling - public int saveChunk(int srvIdMaskHigh, Collection<Ticket> chunk, String ticketPrefix) { + public int saveChunk(int srvIdMaskHigh, Collection<Ticket> chunk, String projectCode) { Preconditions.checkNotNull(jiraCache, "init() was not called"); if (F.isEmpty(chunk)) @@ -105,8 +105,8 @@ public class JiraTicketDao { Map<Long, TicketCompacted> compactedTickets = new HashMap<>(U.capacity(chunk.size())); for (Ticket ticket : chunk) { - long key = ticketToCacheKey(srvIdMaskHigh, ticket.igniteId(ticketPrefix)); - TicketCompacted val = new TicketCompacted(ticket, compactor, ticketPrefix); + long key = ticketToCacheKey(srvIdMaskHigh, ticket.keyWithoutProject(projectCode)); + TicketCompacted val = new TicketCompacted(ticket, compactor, projectCode); compactedTickets.put(key, val); } diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java index d2cb246..ae70dc1 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/JiraTicketSync.java @@ -94,7 +94,7 @@ public class JiraTicketSync { .map(Field::getName) .collect(Collectors.joining(",")); - String projectName = jira.projectName(); + String projectName = jira.projectCodeForVisa(); String baseUrl = "search?jql=" + escape("project=" + projectName + " order by updated DESC") + "&" + "fields=" + reqFields + @@ -107,7 +107,7 @@ public class JiraTicketSync { if (F.isEmpty(page)) return "Something went wrong - no tickets found. Check jira availability."; - int ticketsSaved = jiraDao.saveChunk(srvIdMaskHigh, page, jira.ticketPrefix()); + int ticketsSaved = jiraDao.saveChunk(srvIdMaskHigh, page, jira.projectCodeForVisa()); int ticketsProcessed = page.size(); @@ -122,7 +122,7 @@ public class JiraTicketSync { if (F.isEmpty(page)) break; - int savedNow = jiraDao.saveChunk(srvIdMaskHigh, page, jira.ticketPrefix()); + int savedNow = jiraDao.saveChunk(srvIdMaskHigh, page, jira.projectCodeForVisa()); ticketsSaved += savedNow; ticketsProcessed += page.size(); diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/TicketCompacted.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/TicketCompacted.java index a0da352..a62099c 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/TicketCompacted.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/ignited/TicketCompacted.java @@ -29,6 +29,7 @@ import org.jetbrains.annotations.Nullable; * */ public class TicketCompacted { + public static final String PROJECT_DELIM = "-"; /** Id. */ public long id; @@ -50,11 +51,11 @@ public class TicketCompacted { /** * @param ticket Jira ticket. * @param comp Compactor. - * @param ticketForCommentPrefix Ticket name prefix. + * @param projectCode project name for commenting jira. */ - public TicketCompacted(Ticket ticket, IStringCompactor comp, String ticketForCommentPrefix) { + public TicketCompacted(Ticket ticket, IStringCompactor comp, String projectCode) { id = ticket.id; - igniteId = Integer.valueOf(ticket.key.substring(ticketForCommentPrefix.length())); + igniteId = ticket.keyWithoutProject(projectCode); status = comp.getStringId(ticket.fields.status.name); summary.setValue(ticket.fields.summary); customfield_11050.setValue(ticket.fields.customfield_11050); @@ -63,13 +64,13 @@ public class TicketCompacted { /** * @param comp Compactor. - * @param ticketPrefix Ticket name fixed prefix for the project. + * @param projectCode project code for VISA and filtering tasks. */ - public Ticket toTicket(IStringCompactor comp, String ticketPrefix) { + public Ticket toTicket(IStringCompactor comp, String projectCode) { Ticket ticket = new Ticket(); ticket.id = id; - ticket.key = ticketPrefix + igniteId; + ticket.key = projectCode + PROJECT_DELIM + igniteId; ticket.fields = new Fields(); ticket.fields.status = new Status(comp.getStringFromId(status)); ticket.fields.summary = summary != null ? summary.getValue() : null; diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java index 3a0d356..d78f5a7 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/IJiraIntegration.java @@ -26,15 +26,14 @@ import org.jetbrains.annotations.NotNull; */ public interface IJiraIntegration { + @Deprecated /** @return JIRA ticket prefix. */ @NotNull public String ticketPrefix(); /** * */ - @NotNull public default String projectName() { - return ticketPrefix().replaceAll("-", ""); - } + @NotNull public String projectCodeForVisa(); /** * @return Internal identified service ID. diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java index f7af47f..d8ef219 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Jira.java @@ -45,6 +45,7 @@ class Jira implements IJiraIntegration { private static final Logger logger = LoggerFactory.getLogger(Jira.class); /** JIRA ticket prefix. */ + @Deprecated @NotNull private String jiraTicketPrefix; /** JIRA authorization token. */ @@ -79,6 +80,11 @@ class Jira implements IJiraIntegration { } /** {@inheritDoc} */ + @Override public String projectCodeForVisa() { + return cfg.getJiraConfig(srvId).projectCodeForVisa(); + } + + /** {@inheritDoc} */ @Override public String ticketPrefix() { return jiraTicketPrefix; } diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Ticket.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Ticket.java index b8b16b2..4d5c514 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Ticket.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/jira/pure/Ticket.java @@ -18,6 +18,7 @@ package org.apache.ignite.ci.jira.pure; import com.google.common.base.MoreObjects; +import org.apache.ignite.ci.jira.ignited.TicketCompacted; /** * See example of GSON here @@ -34,10 +35,12 @@ public class Ticket { public Fields fields; /** - * @param ticketPrefix Ticket name fixed prefix. + * @param projectCode JIRA project code to be removed from ticket key. * @return Ignite ticket Number ignoring project code (like 123 in IGNITE-123). */ - public int igniteId(String ticketPrefix) { + public int keyWithoutProject(String projectCode) { + String ticketPrefix = projectCode + TicketCompacted.PROJECT_DELIM; + return Integer.valueOf(key.substring(ticketPrefix.length())); } diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java index 36f6551..a0ab846 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/IJiraServerConfig.java @@ -24,4 +24,9 @@ public interface IJiraServerConfig { * Return JIRA URL, e.g. https://issues.apache.org/jira/ */ public String getUrl(); + + /** + * JIRA project code for filtering out tickets and for adding VISA (JIRA comments). + */ + public String projectCodeForVisa(); } diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/JiraServerConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/JiraServerConfig.java index 946f252..7e14781 100644 --- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/JiraServerConfig.java +++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/JiraServerConfig.java @@ -83,4 +83,15 @@ public class JiraServerConfig implements IJiraServerConfig { return url; } + + /** {@inheritDoc} */ + @Override public String projectCodeForVisa() { + if(Strings.isNullOrEmpty(projectCode) && props!=null) { + String ticketPref = props.getProperty(HelperConfig.JIRA_TICKET_TEMPLATE, "IGNITE-"); + + return ticketPref.replaceAll("-", ""); + } + + return projectCode; + } } 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 c5d192e..5652d38 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 @@ -510,7 +510,8 @@ public class TcBotTriggerAndSignOffService { ITeamcityIgnited tcIgn = tcIgnitedProv.server(srvId, credsProv); paTickets.forEach(ticket -> { - int ticketId = ticket.igniteId(jiraIntegration.ticketPrefix()); + //todo multiple identification ways. + int ticketId = ticket.keyWithoutProject(jiraIntegration.ticketPrefix().replace("-", "")); String branch = gitHubConnIgnited.gitBranchPrefix() + ticketId; String defBtForMaster = findDefaultBranchBuildType(tcIgn.serverId());