Sha256: 3c3485712b09a65158d73b92786399ee8bfdeff96ca63cde56497632ad74b19f
Contents?: true
Size: 1.98 KB
Versions: 3
Compression:
Stored size: 1.98 KB
Contents
# coding: utf-8 module Status class Jenkins def initialize(branch, sha=nil) @branch = branch.gsub(/\//, "_") @sha = sha end def target_url build_url || "#{Status.ci_url}/job/#{@branch}" end def state status end def pass? status == "success" end private def path "/job/#{@branch}/#{build}/api/json" end def status @status ||= ci_status end def ci_status return "pending" if any_pending_reasons? return "failure" if result_is_failure? "success" end def build return last_build["number"] if last_build "lastBuild" end def result_is_failure? response["result"].downcase != "success" end def build_url if last_build.nil? return end last_build["url"] end def last_build @last_build ||= get_build_for_sha end def get_build_for_sha return unless @sha ci_response["builds"].each do |build| return build if last_build_contails_sha?(build) return build if build_is_in_change_set?(build) end nil end def any_pending_reasons? response == "not found" || queued? || response["building"] == true end def response @response ||= Request.new(:ci).get(path) end def ci_response @ci_response ||= Request.new(:ci).get("/job/#{@branch}/api/json?depth=1") end def queued? (!!ci_response["queueItem"]).tap do |queued| if queued Status.system_warn "Your build (#{@branch}) is in a queue." end end end def last_build_contails_sha?(build) return false if build["actions"].nil? || build["actions"][1].nil? build["actions"][1]["lastBuiltRevision"]["SHA1"] =~ /^#{@sha}/ end def build_is_in_change_set?(build) return false if build["changeSet"].nil? build["changeSet"]["items"].any? do |item| item["commitId"] =~ /^#{@sha}/ end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
update_status-0.3.2 | lib/status/jenkins.rb |
update_status-0.3.1 | lib/status/jenkins.rb |
update_status-0.3.0 | lib/status/jenkins.rb |