summaryrefslogtreecommitdiff
path: root/app/services/external_pull_requests/create_pipeline_service.rb
blob: 36411465ff1212add64eba2e601275ec8037b1e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# frozen_string_literal: true

# This service is responsible for creating a pipeline for a given
# ExternalPullRequest coming from other providers such as GitHub.

module ExternalPullRequests
  class CreatePipelineService < BaseService
    def execute(pull_request)
      return unless pull_request.open? && pull_request.actual_branch_head?

      create_pipeline_for(pull_request)
    end

    private

    def create_pipeline_for(pull_request)
      Ci::CreatePipelineService.new(project, current_user, create_params(pull_request))
        .execute(:external_pull_request_event, external_pull_request: pull_request)
    end

    def create_params(pull_request)
      {
        ref: pull_request.source_ref,
        source_sha: pull_request.source_sha,
        target_sha: pull_request.target_sha
      }
    end
  end
end