diff options
Diffstat (limited to 'jobs/jenkins_build_status.rb')
-rw-r--r-- | jobs/jenkins_build_status.rb | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/jobs/jenkins_build_status.rb b/jobs/jenkins_build_status.rb new file mode 100644 index 0000000..267b8da --- /dev/null +++ b/jobs/jenkins_build_status.rb @@ -0,0 +1,73 @@ +require 'net/http' +require 'json' + +JENKINS_URI = "https://jenkins.leap.se/" + +JENKINS_AUTH = { + 'name' => 'nobody', + 'password' => 'nopw' +} + +SCHEDULER.every '10s' do + + json = getFromJenkins(JENKINS_URI + 'api/json?pretty=true') + + failedJobs = Array.new + puts failedJobs + succeededJobs = Array.new + array = json['jobs'] + array.each { + |job| + + next if job['color'] == 'disabled' + next if job['color'] == 'notbuilt' + next if job['color'] == 'blue' + next if job['color'] == 'blue_anime' + + jobStatus = ''; + if job['color'] == 'yellow' || job['color'] == 'yellow_anime' + jobStatus = getFromJenkins(job['url'] + 'lastUnstableBuild/api/json') + elsif job['color'] == 'aborted' || job['color'] == 'aborted_anime' + jobStatus = getFromJenkins(job['url'] + 'lastUnsuccessfulBuild/api/json') + else + jobStatus = getFromJenkins(job['url'] + 'lastFailedBuild/api/json') + end + + culprits = jobStatus['culprits'] + + culpritName = getNameFromCulprits(culprits) + if culpritName != '' + culpritName = culpritName.partition('<').first + end + + failedJobs.push({ label: job['name'], value: culpritName}) + } + + failed = failedJobs.size > 0 + + send_event('jenkinsBuildStatus', { failedJobs: failedJobs, succeededJobs: succeededJobs, failed: failed }) +end + +def getFromJenkins(path) + + uri = URI.parse(path) + + http = Net::HTTP.new(uri.host, uri.port) + http.use_ssl = true + request = Net::HTTP::Get.new(uri.request_uri) + ##if JENKINS_AUTH['name'] + # request.basic_auth(JENKINS_AUTH['name'], JENKINS_AUTH['password']) + #end + response = http.request(request) + + json = JSON.parse(response.body) + return json +end + +def getNameFromCulprits(culprits) + culprits.each { + |culprit| + return culprit['fullName'] + } + return '' +end |