ci: Cancel older builders on Jenkins

When a new build is triggered cancel any older builds to conserve
resources.

Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
Rob Bradford 2019-12-11 13:55:40 +00:00
parent c61104df47
commit 59ae01ff71

30
Jenkinsfile vendored
View File

@ -1,4 +1,17 @@
pipeline{
agent none
stages {
stage ('Master build') {
agent { node { label 'master' } }
stages {
stage('Cancel older builds') {
steps {
cancelPreviousBuilds()
}
}
}
}
stage ('Worker build') {
agent { node { label 'bionic' } }
options {
timeout(time: 1, unit: 'HOURS')
@ -43,4 +56,21 @@ pipeline{
}
}
}
}
}
}
def cancelPreviousBuilds() {
// Check for other instances of this particular build, cancel any that are older than the current one
def jobName = env.JOB_NAME
def currentBuildNumber = env.BUILD_NUMBER.toInteger()
def currentJob = Jenkins.instance.getItemByFullName(jobName)
// Loop through all instances of this particular job/branch
for (def build : currentJob.builds) {
if (build.isBuilding() && (build.number.toInteger() < currentBuildNumber)) {
echo "Older build still queued. Sending kill signal to build number: ${build.number}"
build.doStop()
}
}
}