class ReleaseRobot::Main
Constants
- IMMEDIATE_LABEL
- RELEASE_BASE_BRANCH
- THURSDAY_LABEL
Public Instance Methods
change_base(repo_name, pull_request)
click to toggle source
# File lib/release_robot/main.rb, line 65 def change_base(repo_name, pull_request) client.update_pull_request( repo_name, pull_request.number, nil, nil, base: RELEASE_BASE_BRANCH ) rescue Octokit::UnprocessableEntity => ex puts "Error occurred when attempting to change base branch to #{RELEASE_BASE_BRANCH}:" puts ex.message end
client()
click to toggle source
# File lib/release_robot/main.rb, line 30 def client @client ||= Octokit::Client.new( login: ENV['GITHUB_USERNAME'], password: ENV['GITHUB_PASSWORD'] ) rescue => ex puts "Failed: #{ex}" puts '(Do you have the right Github username and password stored in' puts 'GITHUB_USERNAME and GITHUB_PASSWORD?)' end
collect_pull_requests(repo_name, issue)
click to toggle source
# File lib/release_robot/main.rb, line 53 def collect_pull_requests(repo_name, issue) print "- Determining build status for #{issue.number}" pull_request = client.pull_request(repo_name, issue.number) # Build status status = client.combined_status(repo_name, pull_request.head.sha) change_base(repo_name, pull_request) sort_issue_by_status(issue, status.state, repo_name) end
labels()
click to toggle source
# File lib/release_robot/main.rb, line 26 def labels [THURSDAY_LABEL, IMMEDIATE_LABEL] end
pull_requests()
click to toggle source
# File lib/release_robot/main.rb, line 45 def pull_requests @pull_requests ||= { 'success' => [], 'pending' => [], 'failure' => [] } end
repos()
click to toggle source
# File lib/release_robot/main.rb, line 41 def repos @repos ||= client.repos(owner: 'MammothHR') end
sort_issue_by_status(issue, status, repo_name)
click to toggle source
# File lib/release_robot/main.rb, line 78 def sort_issue_by_status(issue, status, repo_name) case status when 'success' then pull_requests['success'] << [repo_name, issue] when 'pending' then pull_requests['pending'] << [repo_name, issue] when 'failure' then pull_requests['failure'] << [repo_name, issue] end print " -- #{status}\n" end
start()
click to toggle source
# File lib/release_robot/main.rb, line 7 def start repos.each do |repo| next unless repo.owner.login == 'MammothHR' repo_name = repo.full_name puts "Fetching issues for #{repo_name}" all_issues = labels.map do |label| client.list_issues(repo_name, labels: label) end.flatten all_issues.each do |issue| collect_pull_requests(repo_name, issue) end end return pull_requests end