diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-20 12:26:25 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-20 12:26:25 +0000 |
commit | a09983ae35713f5a2bbb100981116d31ce99826e (patch) | |
tree | 2ee2af7bd104d57086db360a7e6d8c9d5d43667a /app/services/merge_requests/create_pipeline_service.rb | |
parent | 18c5ab32b738c0b6ecb4d0df3994000482f34bd8 (diff) | |
download | gitlab-ce-a09983ae35713f5a2bbb100981116d31ce99826e.tar.gz |
Add latest changes from gitlab-org/gitlab@13-2-stable-ee
Diffstat (limited to 'app/services/merge_requests/create_pipeline_service.rb')
-rw-r--r-- | app/services/merge_requests/create_pipeline_service.rb | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/app/services/merge_requests/create_pipeline_service.rb b/app/services/merge_requests/create_pipeline_service.rb index f802aa44487..f9352f10fea 100644 --- a/app/services/merge_requests/create_pipeline_service.rb +++ b/app/services/merge_requests/create_pipeline_service.rb @@ -9,7 +9,7 @@ module MergeRequests end def create_detached_merge_request_pipeline(merge_request) - Ci::CreatePipelineService.new(merge_request.source_project, + Ci::CreatePipelineService.new(pipeline_project(merge_request), current_user, ref: pipeline_ref_for_detached_merge_request_pipeline(merge_request)) .execute(:merge_request_event, merge_request: merge_request) @@ -31,13 +31,29 @@ module MergeRequests private + def pipeline_project(merge_request) + if can_create_pipeline_in_target_project?(merge_request) + merge_request.target_project + else + merge_request.source_project + end + end + def pipeline_ref_for_detached_merge_request_pipeline(merge_request) - if can_use_merge_request_ref?(merge_request) + if can_create_pipeline_in_target_project?(merge_request) merge_request.ref_path else merge_request.source_branch end end + + def can_create_pipeline_in_target_project?(merge_request) + if Gitlab::Ci::Features.allow_to_create_merge_request_pipelines_in_target_project?(merge_request.target_project) + can?(current_user, :create_pipeline, merge_request.target_project) + else + merge_request.for_same_project? + end + end end end |