Class: ReleaseRobot::Main
- Inherits:
-
Object
- Object
- ReleaseRobot::Main
- Defined in:
- lib/release_robot/main.rb
Constant Summary collapse
- RELEASE_BASE_BRANCH =
'weekly-release'.freeze
- THURSDAY_LABEL =
'Ready for Thursday Release'.freeze
- IMMEDIATE_LABEL =
'Ready for Immediate Release'.freeze
Instance Method Summary collapse
- #change_base(repo_name, pull_request) ⇒ Object
- #client ⇒ Object
- #collect_pull_requests(repo_name, issue) ⇒ Object
- #labels ⇒ Object
- #pull_requests ⇒ Object
- #repos ⇒ Object
- #sort_issue_by_status(issue, status, repo_name) ⇒ Object
- #start ⇒ Object
Instance Method Details
#change_base(repo_name, pull_request) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 |
# 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. end |
#client ⇒ Object
30 31 32 33 34 35 36 37 38 39 |
# 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) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 |
# 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 ⇒ Object
26 27 28 |
# File 'lib/release_robot/main.rb', line 26 def labels [THURSDAY_LABEL, IMMEDIATE_LABEL] end |
#pull_requests ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/release_robot/main.rb', line 45 def pull_requests @pull_requests ||= { 'success' => [], 'pending' => [], 'failure' => [] } end |
#repos ⇒ Object
41 42 43 |
# File 'lib/release_robot/main.rb', line 41 def repos @repos ||= client.repos(owner: 'MammothHR') end |
#sort_issue_by_status(issue, status, repo_name) ⇒ Object
78 79 80 81 82 83 84 85 86 |
# 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 ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# 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 |