X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=dsl%2Fkernel-lttng-modules.seed.groovy;h=5a23065138d7e967cc6f255da2ff2f9f5ef1b3c0;hb=acd2d77772b6a23e569e11d662f269857a17400a;hp=e10d2264c38eb8255bfdc3e85f9046d231c15970;hpb=f661398895fc08f29ad4adcd41d475a13aca0412;p=lttng-ci.git diff --git a/dsl/kernel-lttng-modules.seed.groovy b/dsl/kernel-lttng-modules.seed.groovy index e10d226..5a23065 100644 --- a/dsl/kernel-lttng-modules.seed.groovy +++ b/dsl/kernel-lttng-modules.seed.groovy @@ -93,7 +93,7 @@ def modulesBranches = ["master", "stable-2.5", "stable-2.6"] //def modulesBranches = ["master","stable-2.5","stable-2.6", "stable-2.4"] def linuxURL = "git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git" -def modulesURL = "git://git.lttng.org/lttng-modules.git" +def modulesURL = "https://github.com/lttng/lttng-modules.git" // Linux specific variable String linuxCheckoutTo = "linux-source" @@ -234,7 +234,7 @@ if ( result.exitValue() == 0 ) { } } steps { - copyArtifacts("${jobName}/arch=\$arch", "linux-artifact/**", '', false, false) { + copyArtifacts("${jobName}/arch=\$arch,label=kernel", "linux-artifact/**", '', false, false) { latestSuccessful(true) // Latest successful build } shell(readFileFromWorkspace('lttng-modules/lttng-modules-dsl-master.sh')) @@ -248,16 +248,21 @@ 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 +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 -> @@ -286,13 +291,24 @@ 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() } } } @@ -306,8 +322,10 @@ import hudson.model.* import hudson.AbortException import hudson.console.HyperlinkNote import java.util.concurrent.CancellationException +import java.util.Random +Random random = new Random() def jobs = hudson.model.Hudson.instance.items def fail = false def jobStartWith = "JOBPREFIX" @@ -338,6 +356,7 @@ while (toBuild.size() != 0) { ongoingBuild.push(job.scheduleBuild2(0)) println "\\t trigering " + HyperlinkNote.encodeTo('/' + job.url, job.fullDisplayName) } else { + Thread.sleep(random.nextInt(60000)) ongoingBuild.removeAll{ it.isCancelled() || it.isDone() } } } @@ -346,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 { @@ -359,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')