Add master branch to module
[lttng-ci.git] / dsl / kernel-lttng-modules.seed.groovy
index 76f1af60a651d565a812031a2bc941554ed420c9..cda7973ead1754e0d2fd1ed5811a211bec04ce61 100644 (file)
@@ -87,9 +87,10 @@ class BasicVersion implements Comparable<BasicVersion> {
     }
 }
 
-def kernelTagCutOff = new BasicVersion("3.0", "")
-def modulesBranches = ["master","stable-2.5.0","stable-2.6.0", "stable-2.4.0"]
+def kernelTagCutOff = new BasicVersion("2.6.36", "")
+def modulesBranches = ["master"]
 
+//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"
@@ -141,6 +142,10 @@ if ( result.exitValue() == 0 ) {
     // Find the version cutoff
     def cutoffPos = versions.findIndexOf{(it.major >= kernelTagCutOff.major) && (it.minor >= kernelTagCutOff.minor) && (it.revision >= kernelTagCutOff.revision) && (it.build >= kernelTagCutOff.build) && (it.rc >= kernelTagCutOff.rc)}
 
+       // If error set cutoff on last so no job are created
+       if (cutoffPos == -1) {
+               cutoffPos = versions.size()
+       }
     // Get last version and include only last rc
     def last
     def lastNoRcPos
@@ -158,6 +163,12 @@ if ( result.exitValue() == 0 ) {
     String modulesPrefix = "lttng-modules"
     String kernelPrefix = "dsl-kernel"
     String separator = "-"
+
+
+       println("CutOff index")
+       println(cutoffPos)
+
+
     // Actual job creation
     for (int i = cutoffPos; i < versions.size() ; i++) {
 
@@ -236,7 +247,6 @@ if ( result.exitValue() == 0 ) {
 
     // Trigger generations
     def dslTriggerKernel = """\
-
 import hudson.model.*
 import hudson.AbortException
 import hudson.console.HyperlinkNote
@@ -245,37 +255,50 @@ import java.util.concurrent.CancellationException
 
 def jobs = hudson.model.Hudson.instance.items
 def fail = false
-def jobStartWith = "${kernelPrefix}"
+def jobStartWith = "dsl-kernel-"
+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
+       def jobName = job.getName()
+               if (jobName.startsWith(jobStartWith)) {
+                       counter = counter + 1
+                       def lastBuild = job.getLastBuild()
+                               if (lastBuild == null || lastBuild.result != Result.SUCCESS) {
+                                       toBuild.push(job)
+                               } else {
+                                       println("\\tAlready built")
+                               }
+               }
+}
 
-      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")
-    }
-  }
+println "Kernel total "+ counter
+println "Kernel to build "+ toBuild.size()
+
+
+def kernelEnabledNode = 0
+hudson.model.Hudson.instance.nodes.each { node ->
+       if (node.getLabelString().contains("kernel")){
+               kernelEnabledNode++
+       }
+}
+println "Nb of live kernel enabled build node "+ 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")
 }
 """
        def dslTriggerModule = """\
@@ -325,6 +348,9 @@ if (fail){
             steps {
                 systemGroovyCommand(dslTriggerKernel)
             }
+                       triggers {
+                               cron("H 0 * * *")
+                       }
                }
 
                modulesBranches.each { branch ->
@@ -332,6 +358,9 @@ if (fail){
                                steps {
                                        systemGroovyCommand(dslTriggerModule.replaceAll("JOBPREFIX",modulesPrefix + separator + branch + separator))
                                }
+                               triggers {
+                                       scm('@daily')
+                               }
                        }
                }
     }
This page took 0.023865 seconds and 4 git commands to generate.