From fa6fc0b9c1f0e876c1844f540887788fecb9f3ca Mon Sep 17 00:00:00 2001 From: Kapil Khandelwal Date: Thu, 12 Jan 2023 03:04:34 +0530 Subject: [PATCH] How to stop a zombie job on Jenkins without restarting the server (#13277) --- .../jenkins-jobs/zombie-job/pipeline-zombie-job | 15 +++++++++++++++ .../jenkins-jobs/zombie-job/zombie-finish-script | 3 +++ .../zombie-job/zombie-interrupt-script | 6 ++++++ .../jenkins-jobs/zombie-job/zombie-stop-script | 6 ++++++ 4 files changed, 30 insertions(+) create mode 100644 jenkins-modules/jenkins-jobs/zombie-job/pipeline-zombie-job create mode 100644 jenkins-modules/jenkins-jobs/zombie-job/zombie-finish-script create mode 100644 jenkins-modules/jenkins-jobs/zombie-job/zombie-interrupt-script create mode 100644 jenkins-modules/jenkins-jobs/zombie-job/zombie-stop-script diff --git a/jenkins-modules/jenkins-jobs/zombie-job/pipeline-zombie-job b/jenkins-modules/jenkins-jobs/zombie-job/pipeline-zombie-job new file mode 100644 index 0000000000..8c21ada8c6 --- /dev/null +++ b/jenkins-modules/jenkins-jobs/zombie-job/pipeline-zombie-job @@ -0,0 +1,15 @@ +pipeline { + agent any + stages { + stage('Infinite Loop') { + steps { + script { + while (true) { + println 'This is an infinite loop!' + Thread.sleep(10000) + } + } + } + } + } +} diff --git a/jenkins-modules/jenkins-jobs/zombie-job/zombie-finish-script b/jenkins-modules/jenkins-jobs/zombie-job/zombie-finish-script new file mode 100644 index 0000000000..41090599ee --- /dev/null +++ b/jenkins-modules/jenkins-jobs/zombie-job/zombie-finish-script @@ -0,0 +1,3 @@ +Jenkins.instance.getItemByFullName("sampleZombieJob") + .getBuildByNumber(17) + .finish(hudson.model.Result.ABORTED, new java.io.IOException("Aborting build")); diff --git a/jenkins-modules/jenkins-jobs/zombie-job/zombie-interrupt-script b/jenkins-modules/jenkins-jobs/zombie-job/zombie-interrupt-script new file mode 100644 index 0000000000..bf79f50ab9 --- /dev/null +++ b/jenkins-modules/jenkins-jobs/zombie-job/zombie-interrupt-script @@ -0,0 +1,6 @@ +Thread.getAllStackTraces().keySet().each() { + if (it.name.contains('sampleZombieJob')) { + println "Stopping $it.name" + it.interrupt() + } +} diff --git a/jenkins-modules/jenkins-jobs/zombie-job/zombie-stop-script b/jenkins-modules/jenkins-jobs/zombie-job/zombie-stop-script new file mode 100644 index 0000000000..40edcf3ff6 --- /dev/null +++ b/jenkins-modules/jenkins-jobs/zombie-job/zombie-stop-script @@ -0,0 +1,6 @@ +Thread.getAllStackTraces().keySet().each() { + if (it.name.contains('sampleZombieJob')) { + println "Stopping $it.name" + it.stop() + } +}