Files
my-jenkins-library/vars/getJobStatus.groovy

27 lines
1.3 KiB
Groovy

import groovy.json.JsonSlurper
def call(String jobName) {
def jobURL = "http://jenkins-server.default.svc.cluster.local:8080/job/${jobName}/api/json"
def jenkinsUser = "admin"
def jenkinsToken = "Knd6GttfuDRZI0r7EkCiPQ"
// Fetch JSON response from Jenkins API
def response = sh(script: "curl -s -u '${jenkinsUser}:${jenkinsToken}' ${jobURL}", returnStdout: true).trim()
// Parse JSON
def jsonSlurper = new JsonSlurper()
def jobData = jsonSlurper.parseText(response)
// Extract last successful build number
def lastSuccessfulBuildNumber = jobData.lastSuccessfulBuild?.number
if (lastSuccessfulBuildNumber == null || lastSuccessfulBuildNumber < 100) {
echo "Pipeline '${jobName}' has **never successfully completed**! 🚨 Stopping execution."
def trigger = sh(script: "curl -X POST -u '${jenkinsUser}:${jenkinsToken}' http://jenkins-server.default.svc.cluster.local:8080/job/${jobName}/build?token=11cb2b63b5000c7b3224e8a5deb13759e0", returnStdout: true).trim()
def triggerData = jsonSlurper.parseText(trigger)
sleep(5)
error("Wait for dependend build to complete")
}
echo "Pipeline '${jobName}' has **executed successfully at least once** ✅ Last successful build number: ${lastSuccessfulBuildNumber}"
return lastSuccessfulBuildNumber
}