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/05/08 17:12:11 UTC
[ignite-teamcity-bot] branch ignite-10095 updated: IGNITE-10095:
Direct specification for filtering parameters.
This is an automated email from the ASF dual-hosted git repository.
dpavlov pushed a commit to branch ignite-10095
in repository https://gitbox.apache.org/repos/asf/ignite-teamcity-bot.git
The following commit(s) were added to refs/heads/ignite-10095 by this push:
new ebb6e21 IGNITE-10095: Direct specification for filtering parameters.
ebb6e21 is described below
commit ebb6e21b3b50169fdebde49a9c040bc275f6e6c2
Author: Dmitriy Pavlov <dp...@apache.org>
AuthorDate: Wed May 8 20:10:43 2019 +0300
IGNITE-10095: Direct specification for filtering parameters.
---
conf/apache.auth.properties | 14 ---------
conf/branches.json | 16 ++++++----
...BuildParameter.java => BuildParameterSpec.java} | 34 +++++++++++++---------
.../ignite/ci/tcbot/conf/ChainAtServerTracked.java | 4 +--
.../ignite/ci/tcbot/conf/ITcServerConfig.java | 2 ++
...TcServerConfig.java => ParameterValueSpec.java} | 32 +++++---------------
.../ignite/ci/tcbot/conf/TcServerConfig.java | 16 ++++++++++
.../ci/teamcity/ignited/runhist/RunHistSync.java | 28 +++++++++++-------
8 files changed, 77 insertions(+), 69 deletions(-)
diff --git a/conf/apache.auth.properties b/conf/apache.auth.properties
index 974ba25..d16f920 100644
--- a/conf/apache.auth.properties
+++ b/conf/apache.auth.properties
@@ -16,17 +16,3 @@ github.auth_token=
## Branch identification rules
# PR-less contribution branch name mandatory prefix
git.branch_prefix=ignite-
-
-## JIRA integration parameters.
-jira.api_url=https://issues.apache.org/jira/rest/api/2/
-
-# JIRA Url, HTTPs is highly recommended because of Basic Auth used.
-jira.url=https://issues.apache.org/jira/
-
-# Ticket template: project code and dash.
-jira.ticket_template=IGNITE-
-
-# Specify JIRA Auth token (if needed).
-# Base-64 pre-encoded username and password, which will be included into Basic Auth requests.
-# Encoded token needs to be encrypted using org.apache.ignite.ci.tcbot.conf.PasswordEncoder
-jira.auth_token=
\ No newline at end of file
diff --git a/conf/branches.json b/conf/branches.json
index 3039641..11adf90 100644
--- a/conf/branches.json
+++ b/conf/branches.json
@@ -22,7 +22,10 @@
// "branchNumPrefix": "IGNITE-",
/* JIRA Url, HTTPs is highly recommended because of Basic Auth used. */
"url": "https://issues.apache.org/jira/",
- /** JIRA Auth token to access, use PasswordEncoder#encodeJiraTok to get from clear username/password */
+ /** JIRA Auth token to access,
+ Base-64 pre-encoded username and password, which will be included into Basic Auth requests.
+ Encoded token needs to be encrypted using org.apache.ignite.ci.tcbot.conf.PasswordEncoder,
+ use PasswordEncoder#encodeJiraTok to get from clear username/password */
"authTok": "" //todo specify
}
],
@@ -84,11 +87,12 @@
"triggerParameters": [
{
name: "reverse.dep.*.env.JAVA_HOME",
- randomValues: [
- "%env.JDK_ORA_18%",
- "%env.JDK_ORA_9%",
- "%env.JDK_ORA_10%",
- "%env.JDK_OPEN_11%"
+ randomValue: true,
+ "selection": [
+ {value:"%env.JDK_ORA_18%", label:"JDK8"},
+ {value:"%env.JDK_ORA_9%", label:"JDK9"},
+ {value:"%env.JDK_ORA_10%", label:"JDK10"},
+ {value:"%env.JDK_OPEN_11%", label:"JDK11"}
]
}
]
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/BuildParameter.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/BuildParameterSpec.java
similarity index 62%
rename from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/BuildParameter.java
rename to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/BuildParameterSpec.java
index b7fbb6c..e886c11 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/BuildParameter.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/BuildParameterSpec.java
@@ -17,20 +17,25 @@
package org.apache.ignite.ci.tcbot.conf;
-import com.google.common.base.Strings;
-import java.util.LinkedList;
+import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import org.jetbrains.annotations.Nullable;
-public class BuildParameter {
+public class BuildParameterSpec {
/** Name. */
private String name;
/** Value. */
private String value;
- /** Random values. Ignored if exact values were specified */
- private List<String> randomValues = new LinkedList<>();
+ @Nullable private Boolean randomValue;
+
+ /**
+ * For triggering parameters: possble random values.
+ * For filtering parameters: used as value for selection and displaying result.
+ */
+ @Nullable private List<ParameterValueSpec> selectionValues = new ArrayList<>();
/** {@inheritDoc} */
@Override public boolean equals(Object o) {
@@ -38,15 +43,16 @@ public class BuildParameter {
return true;
if (o == null || getClass() != o.getClass())
return false;
- BuildParameter param = (BuildParameter)o;
+ BuildParameterSpec param = (BuildParameterSpec)o;
return Objects.equals(name, param.name) &&
Objects.equals(value, param.value) &&
- Objects.equals(randomValues, param.randomValues);
+ Objects.equals(randomValue, param.randomValue) &&
+ Objects.equals(selectionValues, param.selectionValues);
}
/** {@inheritDoc} */
@Override public int hashCode() {
- return Objects.hash(name, value, randomValues);
+ return Objects.hash(name, value, randomValue, selectionValues);
}
public String name() {
@@ -54,14 +60,16 @@ public class BuildParameter {
}
public Object generateValue() {
- if (!Strings.isNullOrEmpty(value))
+ if (!randomValue)
+ return value;
+
+ if (selectionValues.isEmpty())
return value;
- if (randomValues.isEmpty())
- return null;
+ int idx = (int)(Math.random() * selectionValues.size());
- int idx = (int)(Math.random() * randomValues.size());
+ ParameterValueSpec spec = selectionValues.get(idx);
- return randomValues.get(idx);
+ return spec.value();
}
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ChainAtServerTracked.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ChainAtServerTracked.java
index 82d3570..f60cd2e 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ChainAtServerTracked.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ChainAtServerTracked.java
@@ -50,7 +50,7 @@ public class ChainAtServerTracked extends ChainAtServer {
@Nullable private Integer triggerBuildQuietPeriod;
/** Build parameters for Triggerring. */
- @Nullable private List<BuildParameter> triggerParameters;
+ @Nullable private List<BuildParameterSpec> triggerParameters;
/** @return {@link #suiteId} */
@Nonnull public String getSuiteIdMandatory() {
@@ -139,7 +139,7 @@ public class ChainAtServerTracked extends ChainAtServer {
if (triggerParameters == null || triggerParameters.isEmpty())
return Stream.empty();
- return triggerParameters.stream().map(BuildParameter::name);
+ return triggerParameters.stream().map(BuildParameterSpec::name);
}
/** */
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
index e08a21b..dbc7641 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
@@ -16,6 +16,7 @@
*/
package org.apache.ignite.ci.tcbot.conf;
+import java.util.Collection;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -43,4 +44,5 @@ public interface ITcServerConfig {
*/
@NotNull public String defaultTrackedBranch();
+ public Collection<String> filteringParametersKeys();
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ParameterValueSpec.java
similarity index 56%
copy from ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
copy to ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ParameterValueSpec.java
index e08a21b..03bf553 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ITcServerConfig.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/ParameterValueSpec.java
@@ -14,33 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.ci.tcbot.conf;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
+package org.apache.ignite.ci.tcbot.conf;
/**
- * Teamcity Server configuration.
+ *
*/
-public interface ITcServerConfig {
- /**
- * @return Another TC Server (service) config name to use settings from. Filled only for server aliases.
- */
- @Nullable public String reference();
-
- /**
- * @return Normalized Host address, ends with '/'.
- */
- @NotNull public String host();
-
- /**
- * @return Directory for downloading build logs (will contain ZIP files).
- */
- @NotNull public String logsDirectory();
-
- /**
- * @return
- */
- @NotNull public String defaultTrackedBranch();
+public class ParameterValueSpec {
+ private String value;
+ private String label;
+ public String value() {
+ return value;
+ }
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java
index fe078ee..8479ccd 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/conf/TcServerConfig.java
@@ -17,7 +17,12 @@
package org.apache.ignite.ci.tcbot.conf;
import com.google.common.base.Strings;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
import java.util.Properties;
+import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import org.apache.ignite.ci.HelperConfig;
import org.jetbrains.annotations.NotNull;
@@ -48,6 +53,9 @@ public class TcServerConfig implements ITcServerConfig {
/** Default tracked branch name in internal identification of TC bot. */
@Nullable private String defaultTrackedBranch;
+ /** Build parameters which may be used for filtering. */
+ @Nullable private List<BuildParameterSpec> filteringParameters = new ArrayList<>();
+
public TcServerConfig() {
}
@@ -103,6 +111,14 @@ public class TcServerConfig implements ITcServerConfig {
return DEFAULT_TRACKED_BRANCH_NAME;
}
+ /** {@inheritDoc} */
+ @Override public Collection<String> filteringParametersKeys() {
+ if (filteringParameters == null || filteringParameters.isEmpty())
+ return Collections.emptySet();
+
+ return filteringParameters.stream().map(BuildParameterSpec::name).collect(Collectors.toSet());
+ }
+
/**
* @param props Properties.
*/
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistSync.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistSync.java
index aecd618..d5f804d 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistSync.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/runhist/RunHistSync.java
@@ -18,6 +18,7 @@
package org.apache.ignite.ci.teamcity.ignited.runhist;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -38,6 +39,7 @@ import org.apache.ignite.ci.di.scheduler.IScheduler;
import org.apache.ignite.ci.tcbot.TcBotSystemProperties;
import org.apache.ignite.ci.tcbot.conf.ChainAtServerTracked;
import org.apache.ignite.ci.tcbot.conf.ITcBotConfig;
+import org.apache.ignite.ci.tcbot.conf.ITcServerConfig;
import org.apache.ignite.ci.teamcity.ignited.IStringCompactor;
import org.apache.ignite.ci.teamcity.ignited.ITeamcityIgnited;
import org.apache.ignite.ci.teamcity.ignited.buildref.BuildRefDao;
@@ -105,7 +107,7 @@ public class RunHistSync {
if (histDao.buildWasProcessed(srvId, build.id()))
return;
- Set<Integer> allTriggeringBuildParameters = getSuitePossibleParameters(srvCode);
+ Set<Integer> allTriggeringBuildParameters = getFilteringParameters(srvCode);
boolean saveNow = false;
@@ -150,15 +152,21 @@ public class RunHistSync {
}
}
- @NotNull public Set<Integer> getSuitePossibleParameters(String srvCode) {
- return cfg.getTrackedBranches().getBranches().stream().flatMap(
- b -> b.getChainsStream()
- .filter(ChainAtServerTracked::isTriggerBuild)
- .filter(chain -> Objects.equals(chain.getServerId(), srvCode))
- .flatMap(ChainAtServerTracked::buildParametersKeys)
- )
- .map(k -> compactor.getStringId(k))
- .collect(Collectors.toSet());
+ @NotNull public Set<Integer> getFilteringParameters(String srvCode) {
+ Set<String> triggerParameters = this.cfg.getTrackedBranches().getBranches().stream().flatMap(
+ b -> b.getChainsStream()
+ .filter(ChainAtServerTracked::isTriggerBuild)
+ .filter(chain -> Objects.equals(chain.getServerId(), srvCode))
+ .flatMap(ChainAtServerTracked::buildParametersKeys)
+ ).collect(Collectors.toSet());
+
+ ITcServerConfig tcCfg = cfg.getTeamcityConfig(srvCode);
+
+ Collection<String> filtering = tcCfg.filteringParametersKeys();
+
+ triggerParameters.addAll(filtering);
+
+ return triggerParameters.stream().map(k -> compactor.getStringId(k)).collect(Collectors.toSet());
}
@MonitoredTask(name = "Save Builds To History(srv, runner)", nameExtArgsIndexes = {0, 1})