X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;ds=sidebyside;f=dsl%2Fkernel-lttng-modules.seed.groovy;h=5a23065138d7e967cc6f255da2ff2f9f5ef1b3c0;hb=acd2d77772b6a23e569e11d662f269857a17400a;hp=e3ee3f0884901e5a7c9ec2566aba865c4c4dedba;hpb=e37c44764144498150c3ea4c839569ece1ccc284;p=lttng-ci.git diff --git a/dsl/kernel-lttng-modules.seed.groovy b/dsl/kernel-lttng-modules.seed.groovy index e3ee3f0..5a23065 100644 --- a/dsl/kernel-lttng-modules.seed.groovy +++ b/dsl/kernel-lttng-modules.seed.groovy @@ -248,6 +248,7 @@ if ( result.exitValue() == 0 ) { // Trigger generations def dslTriggerKernel = """\ import hudson.model.* +import jenkins.model.* import hudson.AbortException import hudson.console.HyperlinkNote import java.util.concurrent.CancellationException @@ -257,9 +258,11 @@ import java.util.Random Random random = new Random() def jobs = hudson.model.Hudson.instance.items def fail = false -def jobStartWith = "dsl-kernel-" +def jobStartWithKernel = "KERNELPREFIX" +def jobStartWithModule = "MODULEPREFIX" def toBuild = [] def counter = 0 +def limitQueue = 4 def anotherBuild jobs.each { job -> @@ -288,12 +291,22 @@ hudson.model.Hudson.instance.nodes.each { node -> println "Nb of live kernel enabled build node "+ kernelEnabledNode def ongoingBuild = [] +def q = jenkins.model.Jenkins.getInstance().getQueue() while (toBuild.size() != 0) { - if(ongoingBuild.size() <= (kernelEnabledNode.intdiv(2))) { + // Throttle the build with both the number of current parent task and queued + // task.Look for both kernel and downstream module from previous kernel. + def queuedTask = q.getItems().findAll { + it.task.name.startsWith(jobStartWithKernel) || + it.task.name.startsWith(jobStartWithModule) + } + + if ((ongoingBuild.size() <= kernelEnabledNode) && (queuedTask.size() < limitQueue)) { def job = toBuild.pop() ongoingBuild.push(job.scheduleBuild2(0)) - println "\\t trigering" + HyperlinkNote.encodeTo('/' + job.url, job.fullDisplayName) + println "Currently " + queuedTask.findAll{it.task.name.startsWith(jobStartWithModule).size() + "module jobs are queued" + println "Currently " + queuedTask.findAll{it.task.name.startsWith(jobStartWithKernel).size() + "kernel jobs are queued" + println "\\t trigering " + HyperlinkNote.encodeTo('/' + job.url, job.fullDisplayName) } else { Thread.sleep(random.nextInt(120000)) ongoingBuild.removeAll{ it.isCancelled() || it.isDone() } @@ -352,6 +365,10 @@ if (fail){ throw new AbortException("Some job failed") } """ + + dslTriggerKernel = dslTriggerKernel.replaceAll("KERNELPREFIX", kernelPrefix) + dslTriggerKernel = dslTriggerKernel.replaceAll("MODULEPREFIX", modulesPrefix) + dslTriggerModule = dslTriggerModule.replaceAll("JOBPREFIX",modulesPrefix + separator + branch + separator) if (isJenkinsInstance) { freeStyleJob("dsl-trigger-kernel") { steps { @@ -365,7 +382,7 @@ if (fail){ modulesBranches.each { branch -> freeStyleJob("dsl-trigger-module-${branch}") { steps { - systemGroovyCommand(dslTriggerModule.replaceAll("JOBPREFIX",modulesPrefix + separator + branch + separator)) + systemGroovyCommand(dslTriggerModule) } triggers { scm('@daily')