aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jenkins/generator_DSL.groovy6
-rw-r--r--jenkins/multi_trigger.groovy33
2 files changed, 34 insertions, 5 deletions
diff --git a/jenkins/generator_DSL.groovy b/jenkins/generator_DSL.groovy
index 3278d2c..b3f32b5 100644
--- a/jenkins/generator_DSL.groovy
+++ b/jenkins/generator_DSL.groovy
@@ -216,6 +216,12 @@ pipelineJob("trigger_${manifest_basename}") {
"",
"List of supplemental environment variables to define in " +
"the build envioronment.")
+ textParam("non_python_pkg_platform",
+ "py3.6",
+ "Only platforms with this python version in their name will " +
+ "be used to host the building of non-python packages. This " +
+ "prevents non-python packages from being built multiple " +
+ "times unnecessarily.")
textParam("mail_recipients",
this.mail_recipients,
"Whom to pester.")
diff --git a/jenkins/multi_trigger.groovy b/jenkins/multi_trigger.groovy
index 03e928e..e23d08b 100644
--- a/jenkins/multi_trigger.groovy
+++ b/jenkins/multi_trigger.groovy
@@ -18,17 +18,39 @@ node('master') {
os_list.add(os)
}
}
- // Compose list of master platforms
+
+ // Determine if the master platform has been overridden
+ // by the specification of a valid platform name substring.
+ def override_master_platform = false
+ for (platform in platforms) {
+ if (platform.contains(non_python_pkg_platform)) {
+ override_master_platform = true
+ break
+ }
+ }
+
def master_platforms = []
- for (osval in os_list) {
+ if (override_master_platform) {
for (platform in platforms) {
- if (platform.contains(osval)) {
+ if (platform.contains(non_python_pkg_platform)) {
master_platforms.add(platform)
- break
}
}
+ println("Automatic master_platforms overridden by job parameter." +
+ " Building non-python packages only on master_platforms: ${master_platforms}")
+ } else {
+ // Compose automatic list of master platforms.
+ for (osval in os_list) {
+ for (platform in platforms) {
+ if (platform.contains(osval)) {
+ master_platforms.add(platform)
+ break
+ }
+ }
+ }
+ println("Building non-python packages only on master_platforms: ${master_platforms}")
}
- println("master_platforms: ${master_platforms}")
+
for (platform in platforms) {
build_type = platform.tokenize("_")[0]
@@ -48,6 +70,7 @@ node('master') {
if (master_platforms.contains(platname)) {
filter_nonpython = false
}
+
tasks["${platname}"] = {
build_objs["${platname}"] = build(
job: "/AstroConda/${platname}/_dispatch",