Y
Size: a a a
Y
VD
if (env.BRANCH_NAME.startsWith('master')) {
//kill all job with current name only for PR
killall_jobs()
}else{
killthis_job()
}
def killall_jobs() {
def jobname = env.JOB_NAME
def buildnum = env.BUILD_NUMBER.toInteger()
def job = Jenkins.instance.getItemByFullName(jobname)
for (build in job.builds) {
if (!build.isBuilding()) { continue; }
if (buildnum == build.getNumber().toInteger()) { continue; println "equals" }
echo "Stop build = ${build}"
try {
build.doStop()
} catch (error) {
echo "Can't stop ${build}"
}
}
}
def killthis_job() {
def jobname = env.JOB_NAME
def buildnum = env.BUILD_NUMBER.toInteger()
def job = Jenkins.instance.getItemByFullName(jobname)
for (build in job.builds) {
if (!build.isBuilding()) { continue; }
if (buildnum == build.getNumber().toInteger()) { continue; println "equals" }
currentBuild.result = 'ABORTED'
error("Old build ${build} working. Aborting?")
}
}
PK
def abortPreviousBuilds() {
Run previousBuild = currentBuild.rawBuild.getPreviousBuildInProgress()
while (previousBuild != null) {
if (previousBuild.isInProgress()) {
def executor = previousBuild.getExecutor()
if (executor != null) {
echo ">> Aborting older build #${previousBuild.number}"
executor.interrupt(Result.ABORTED, new UserInterruption(
"Aborted by newer build #${currentBuild.number}"
))
}
}
previousBuild = previousBuild.getPreviousBuildInProgress()
}
}
PK
Y
II
pipeline {
Y
Y
u
Y
PK
Н
PK
Н
Н
Y
Y
Y
PK
Н