Abort modules build if a new build is queued
[lttng-ci.git] / scripts / lttng-modules / master-ubuntu.groovy
index 8dca9cdd3d9a6997573cf76e412b1d8b27b21ef2..9f1869fab3dd98f35b34acf74e2511c24f3b6851 100644 (file)
@@ -29,6 +29,7 @@ def maxConcurrentBuild = build.buildVariableResolver.resolve('maxConcurrentBuild
 def kgitrepo = build.buildVariableResolver.resolve('kgitrepo')
 def uversion = build.buildVariableResolver.resolve('uversion')
 def job = Hudson.instance.getJob(build.buildVariableResolver.resolve('kbuildjob'))
+def currentJobName = build.project.getFullDisplayName()
 
 // Get the out variable
 def config = new HashMap()
@@ -50,7 +51,7 @@ def matchStrs = []
 switch (uversion) {
   case 'xenial':
     matchStrs = [
-      ~/^refs\/tags\/(Ubuntu-4\.4\.0-[\d\.]+)$/,
+      ~/^refs\/tags\/(Ubuntu-4\.4\.0-\d{1,3}\.[\d\.]+)$/,
       ~/^refs\/tags\/(Ubuntu-lts-.*_16\.04\.\d+)$/,
     ]
     break
@@ -128,6 +129,15 @@ while ( kversions.size() != 0 || ongoingBuild.size() != 0 ) {
       }
     }
 
+    // Check for queued similar job since we only want to run latest
+    // as Mathieu Desnoyers requirement
+    similarJobQueued = Hudson.instance.queue.items.count{it.task.getFullDisplayName() == currentJobName}
+    if ( similarJobQueued > 0 ) {
+        // Abort since new build is queued
+        build.setResult(hudson.model.Result.ABORTED)
+        throw new InterruptedException()
+    }
+
     def i = ongoingBuild.iterator()
     while ( i.hasNext() ) {
       currentBuild = i.next()
@@ -166,11 +176,7 @@ println "---Build report---"
 for (b in allBuilds) {
   def kernelStr = b.buildVariableResolver.resolve("kversion")
   println "${b.fullDisplayName} (${kernelStr}) completed with status ${b.result}"
-}
-
-// Clean all builds
-// TODO: Delete only builds generated from this job run
-for (b in job.getBuilds()) {
+  // Cleanup builds
   b.delete()
 }
 
This page took 0.024237 seconds and 4 git commands to generate.