diff options
author | Matt Rendina <mrendina@stsci.edu> | 2018-10-10 13:11:57 -0400 |
---|---|---|
committer | Matt Rendina <mrendina@stsci.edu> | 2018-10-10 13:11:57 -0400 |
commit | d529056a14540d934428b1604541ea96c0952613 (patch) | |
tree | afc6040b8dba941cd4715680bcc44336ec23b186 | |
parent | 19134d9a16f889bacc3f1ad4b1a1a37755844cf8 (diff) | |
download | build_control-d529056a14540d934428b1604541ea96c0952613.tar.gz |
Allow override of master_platforms for building non-python packages.
-rw-r--r-- | jenkins/generator_DSL.groovy | 6 | ||||
-rw-r--r-- | jenkins/multi_trigger.groovy | 35 |
2 files changed, 35 insertions, 6 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..48f9b84 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 - def master_platforms = [] - for (osval in os_list) { + + // 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 + } + } + + 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. + def 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", |