summaryrefslogtreecommitdiff
path: root/jobs/jenkins_build_status.rb
diff options
context:
space:
mode:
Diffstat (limited to 'jobs/jenkins_build_status.rb')
-rw-r--r--jobs/jenkins_build_status.rb73
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