Class: Jenkins
- Inherits:
-
Object
- Object
- Jenkins
- Defined in:
- lib/tutter/action/jenkins.rb
Instance Method Summary collapse
-
#initialize(settings, client, project, data) ⇒ Jenkins
constructor
A new instance of Jenkins.
- #run ⇒ Object
Constructor Details
#initialize(settings, client, project, data) ⇒ Jenkins
Returns a new instance of Jenkins.
2 3 4 5 6 7 8 9 |
# File 'lib/tutter/action/jenkins.rb', line 2 def initialize(settings, client, project, data) @settings = settings || {} @client = client @project = project @data = data @merge_request_comment = @settings['merge_request_comment'] @merge_request_comment ||= 'merge, my change is covered by tests' end |
Instance Method Details
#run ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/tutter/action/jenkins.rb', line 11 def run pull_request_id = @data['issue']['number'] puts "pull request id: #{pull_request_id}" comments = @client.issue_comments(@project, pull_request_id) last_comment = comments.last asked_to_merge = last_comment && last_comment.body.strip.downcase == @merge_request_comment.strip.downcase unless asked_to_merge puts "not asked to merge" return false end pr = @client.pull_request @project, pull_request_id if pr.mergeable_state != 'clean' @client.add_comment(@project, pull_request_id, "Please rebase your change, merge state is #{pr.mergeable_state}") return false end unless pr.mergeable @client.add_comment(@project, pull_request_id, "Please rebase your change, pull request is not mergeable") return false end last_commit = @client.pull_request_commits(@project, pull_request_id).last last_commit_date = last_commit.commit.committer.date if last_comment.created_at < last_commit_date @client.add_comment(@project, pull_request_id, "Please reopen pull request, found a new commit") return false end jenkins_last_comment = @client.issue_comments(@project, pull_request_id).select{|c| c.attrs[:user].attrs[:login] == 'jenkins'}.last jenkins_allows_merge = jenkins_last_comment && jenkins_last_comment.body =~ /PASS/ if jenkins_allows_merge puts "merging #{pull_request_id} #{@project}" @client.merge_pull_request(@project, pull_request_id, 'ok, shipping!') else @client.add_comment(@project, pull_request_id, "Please make sure tests pass") end end |