class RoboPigeon::GitLab::MergeRequest
Attributes
merge_request[RW]
Public Class Methods
create!(source, target, title)
click to toggle source
# File lib/robopigeon/gitlab/merge_request.rb, line 8 def self.create!(source, target, title) RoboPigeon::GitLab::MergeRequest.new(RoboPigeon::GitLab::Client.client.create_merge_request( RoboPigeon::GitLab::Client.project, title, source_branch: source, target_branch: target )) end
find(source, target)
click to toggle source
# File lib/robopigeon/gitlab/merge_request.rb, line 17 def self.find(source, target) RoboPigeon::GitLab::MergeRequest.new( RoboPigeon::GitLab::Client.client.merge_requests( RoboPigeon::GitLab::Client.project, state: 'opened', source_branch: source, target_branch: target ).first ) end
new(merge_request)
click to toggle source
# File lib/robopigeon/gitlab/merge_request.rb, line 4 def initialize(merge_request) self.merge_request = merge_request end
Public Instance Methods
client()
click to toggle source
# File lib/robopigeon/gitlab/merge_request.rb, line 32 def client gitlab.client end
comment!(text)
click to toggle source
# File lib/robopigeon/gitlab/merge_request.rb, line 36 def comment!(text) client.create_merge_request_note(RoboPigeon::GitLab::Client.project, merge_request.iid, body: text) end
gitlab()
click to toggle source
# File lib/robopigeon/gitlab/merge_request.rb, line 28 def gitlab RoboPigeon::GitLab::Client end
merge!()
click to toggle source
# File lib/robopigeon/gitlab/merge_request.rb, line 40 def merge! return if already_up_to_date return if merge_merge_request! close_merge_request! raise 'Merge request could not be merged' end
Private Instance Methods
already_up_to_date()
click to toggle source
# File lib/robopigeon/gitlab/merge_request.rb, line 51 def already_up_to_date if merge_request.changes_count.nil? || merge_request.changes_count == '0' close_merge_request! puts 'Merge request had no changes, aborting.' return true end false end
close_merge_request!()
click to toggle source
# File lib/robopigeon/gitlab/merge_request.rb, line 70 def close_merge_request! client.update_merge_request(RoboPigeon::GitLab::Client.project, merge_request.iid, state_event: 'close') true rescue Gitlab::Error::Error => e puts "Failed to close merge request - #{e}\n#{e.message}" false end
merge_merge_request!()
click to toggle source
# File lib/robopigeon/gitlab/merge_request.rb, line 60 def merge_merge_request! begin merge = client.accept_merge_request(RoboPigeon::GitLab::Client.project, merge_request.iid, merge_when_pipeline_succeeds: true) return merge.merge_status == 'can_be_merged' && (merge.merge_when_pipeline_succeeds || merge.state == 'merged') rescue Gitlab::Error::Error => e puts "Failed to merge branch - #{e}\n#{e.message}" end false end