Sha256: 4296fb784805f877d2de395dfaebb7ea9023405c09cacdc2b83b4d34ba73192a

Contents?: true

Size: 820 Bytes

Versions: 6

Compression:

Stored size: 820 Bytes

Contents

module Shipit
  class MergePullRequestsJob < BackgroundJob
    include BackgroundJob::Unique
    on_duplicate :drop

    def perform(stack)
      pull_requests = stack.pull_requests.to_be_merged.to_a
      pull_requests.each do |pull_request|
        pull_request.refresh!
        pull_request.reject_unless_mergeable!
        if pull_request.closed?
          pull_request.merged_upstream? ? pull_request.complete! : pull_request.cancel!
        end
      end

      return false unless stack.allows_merges?

      pull_requests.select(&:pending?).each do |pull_request|
        pull_request.refresh!
        begin
          pull_request.merge!
        rescue PullRequest::NotReady
          MergePullRequestsJob.set(wait: 10.seconds).perform_later(stack)
          return false
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
shipit-engine-0.20.1 app/jobs/shipit/merge_pull_requests_job.rb
shipit-engine-0.20.0 app/jobs/shipit/merge_pull_requests_job.rb
shipit-engine-0.19.0 app/jobs/shipit/merge_pull_requests_job.rb
shipit-engine-0.18.1 app/jobs/shipit/merge_pull_requests_job.rb
shipit-engine-0.18.0 app/jobs/shipit/merge_pull_requests_job.rb
shipit-engine-0.17.0 app/jobs/shipit/merge_pull_requests_job.rb