From 483859f33b40824d9813bd1a60807ac26bd37280 Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Thu, 19 May 2016 11:48:50 -0400 Subject: [PATCH] Abort current build if a new build is queued --- scripts/lttng-modules/master-vanilla.groovy | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/scripts/lttng-modules/master-vanilla.groovy b/scripts/lttng-modules/master-vanilla.groovy index b297957..33c62f5 100644 --- a/scripts/lttng-modules/master-vanilla.groovy +++ b/scripts/lttng-modules/master-vanilla.groovy @@ -127,6 +127,7 @@ def maxConcurrentBuild = build.buildVariableResolver.resolve('maxConcurrentBuild def kgitrepo = build.buildVariableResolver.resolve('kgitrepo') def kverfloor = new kVersion(build.buildVariableResolver.resolve('kverfloor')) def job = Hudson.instance.getJob(build.buildVariableResolver.resolve('kbuildjob')) +def currentJobName = build.project.getFullDisplayName() // Get the out variable def config = new HashMap() @@ -182,6 +183,7 @@ def allBuilds = [] def ongoingBuild = [] def failedRuns = [] def isFailed = false +def similarJobQueued = 0; // Loop while we have kernel versions remaining or jobs running while ( kversions.size() != 0 || ongoingBuild.size() != 0 ) { @@ -215,6 +217,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() -- 2.34.1