From: Jonathan Rajotte Date: Thu, 9 Jul 2015 16:28:22 +0000 (-0400) Subject: Move to a regulated triggering technique and add module stable branch X-Git-Url: http://git.liburcu.org/?a=commitdiff_plain;h=f661398895fc08f29ad4adcd41d475a13aca0412;p=lttng-ci.git Move to a regulated triggering technique and add module stable branch --- diff --git a/dsl/kernel-lttng-modules.seed.groovy b/dsl/kernel-lttng-modules.seed.groovy index cda7973..e10d226 100644 --- a/dsl/kernel-lttng-modules.seed.groovy +++ b/dsl/kernel-lttng-modules.seed.groovy @@ -88,7 +88,7 @@ class BasicVersion implements Comparable { } def kernelTagCutOff = new BasicVersion("2.6.36", "") -def modulesBranches = ["master"] +def modulesBranches = ["master", "stable-2.5", "stable-2.6"] //def modulesBranches = ["master","stable-2.5","stable-2.6", "stable-2.4"] @@ -311,36 +311,39 @@ import java.util.concurrent.CancellationException def jobs = hudson.model.Hudson.instance.items def fail = false def jobStartWith = "JOBPREFIX" +def toBuild = [] +def counter = 0 def anotherBuild jobs.each { job -> - def jobName = job.getName() - if (jobName.startsWith(jobStartWith)) { - def lastBuild = job.getLastBuild() - if (lastBuild == null) { - try { - def future = job.scheduleBuild2(0, new Cause.UpstreamCause(build)) - println "\\tWaiting for the completion of " + HyperlinkNote.encodeTo('/' + job.url, job.fullDisplayName) - anotherBuild = future.get() - } catch (CancellationException x) { - throw new AbortException("\${job.fullDisplayName} aborted.") - } - println HyperlinkNote.encodeTo('/' + anotherBuild.url, anotherBuild.fullDisplayName) + " completed. Result was " + anotherBuild.result - - build.result = anotherBuild.result - if (anotherBuild.result != Result.SUCCESS && anotherBuild.result != Result.UNSTABLE) { - // We abort this build right here and now. - fail = true - println("Build Failed") - } - } else { - println("\\tAlready built") - } - } + def jobName = job.getName() + if (jobName.startsWith(jobStartWith)) { + counter = counter + 1 + toBuild.push(job) + } +} + +// Get valid node +def kernelEnabledNode = 0 +hudson.model.Hudson.instance.nodes.each { node -> + if (node.getLabelString().contains("kernel")){ + kernelEnabledNode++ + } +} + +def ongoingBuild = [] +while (toBuild.size() != 0) { + if(ongoingBuild.size() <= (kernelEnabledNode.intdiv(2))) { + def job = toBuild.pop() + ongoingBuild.push(job.scheduleBuild2(0)) + println "\\t trigering " + HyperlinkNote.encodeTo('/' + job.url, job.fullDisplayName) + } else { + ongoingBuild.removeAll{ it.isCancelled() || it.isDone() } + } } if (fail){ - throw new AbortException("Some job failed") + throw new AbortException("Some job failed") } """ if (isJenkinsInstance) {