From 8aabb6cc21ec6ed4682e0c3a7e2086d1a2345720 Mon Sep 17 00:00:00 2001 From: Mat Sutcliffe Date: Fri, 28 Dec 2018 03:20:04 +0000 Subject: [PATCH] [Jenkinsfile] Constrain abortion of previous running builds triggered by Differential. --- Jenkinsfile | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 31fd87128..ea5991645 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -282,18 +282,23 @@ def isUserAborted(error) { } def abortPreviousRunningBuilds() { - def pname = env.JOB_NAME.split('/')[0] + Jenkins.instance.getItemByFullName(env.JOB_NAME).getBuilds().each{ build -> + if (params.REVISION_ID == null || isAbortableDifferentialBuild(build)) { + def exec = build.getExecutor() - Jenkins.instance.getItem(pname).getItem(env.JOB_BASE_NAME).getBuilds().each{ build -> - def exec = build.getExecutor() - - if (build.number < currentBuild.number && exec != null) { - exec.interrupt(Result.ABORTED, new CauseOfInterruption.UserInterruption("Aborted by #${currentBuild.number}")) - println("Aborted previous running build #${build.number}") + if (build.number < currentBuild.number && exec != null) { + exec.interrupt(Result.ABORTED, new CauseOfInterruption.UserInterruption("Aborted by #${currentBuild.number}")) + println("Aborted previous running build #${build.number}") + } } } } +def isAbortableDifferentialBuild(build) { + def buildEnv = build.getEnvironment(TaskListener.NULL) + return buildEnv.containsKey('ABORT_ON_REVISION_ID') && buildEnv.get('ABORT_ON_REVISION_ID') == params.REVISION_ID +} + def notifySlack(nodeName, buildStatus = 'STARTED') { // build status of null means successful buildStatus = buildStatus ?: 'SUCCESS'