class PullRequestBuilder::GithubStatusReporter
Attributes
client[RW]
logger[RW]
osc[RW]
package[RW]
repository[RW]
Public Instance Methods
report()
click to toggle source
# File lib/pull_request_builder/github_status_reporter.rb, line 8 def report if update? logger.info("Update status to state #{state}.") client.create_status(repository, package.commit_sha, state, options) else logger.info('State did not change, continue...') end rescue Octokit::Error => e logger.error("Status not updated: #{e}.") end
Private Instance Methods
context()
click to toggle source
# File lib/pull_request_builder/github_status_reporter.rb, line 27 def context 'OBS Package Build' end
description()
click to toggle source
# File lib/pull_request_builder/github_status_reporter.rb, line 31 def description count_all = summary[:success] + summary[:failure] + summary[:pending] count_finished = count_all - summary[:pending] result = String.new("#{count_finished}/#{count_all} processed") result << " | #{summary[:failure]} failures" if summary[:failure].positive? result end
judge_code(code)
click to toggle source
# File lib/pull_request_builder/github_status_reporter.rb, line 58 def judge_code(code) case code when 'succeeded' :success when 'excluded', 'disabled' :exclusion when 'broken', 'failed', 'unresolvable' :failure when 'building', 'dispatching', 'scheduled', 'finished', 'blocked' :pending else logger.error("Unmapped status result #{code} in #{package.obs_package_name}") :pending end end
options()
click to toggle source
# File lib/pull_request_builder/github_status_reporter.rb, line 50 def options { context: context, target_url: package.url, description: description } end
state()
click to toggle source
# File lib/pull_request_builder/github_status_reporter.rb, line 40 def state if summary[:failure].positive? :failure elsif summary[:pending].positive? || summary[:success].zero? :pending else :success end end
summary()
click to toggle source
# File lib/pull_request_builder/github_status_reporter.rb, line 74 def summary return @summary if @summary @summary = { failure: 0, success: 0, pending: 0, exclusion: 0 } result = osc.build_result(package) node = Nokogiri::XML(result).root node.xpath('.//status').each do |status| @summary[judge_code(status['code'])] += 1 end @summary end
update?()
click to toggle source
# File lib/pull_request_builder/github_status_reporter.rb, line 21 def update? statuses = client.statuses(repository, package.commit_sha) build_status = statuses.select { |state| state.context == context }.first build_status.nil? || state.to_s != build_status.state || description != build_status.description end