diff options
author | Shinya Maeda <shinya@gitlab.com> | 2019-03-21 20:08:32 +0700 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2019-03-29 13:58:45 +0700 |
commit | bf639fd504c84929ff8542eef81578a6745bf428 (patch) | |
tree | b7eb20a2ef25de759ed3d8a2ef9a063c77564c03 /app/services/merge_requests | |
parent | 3a477fec8f1fe6cf1da70a8ae0a8473ab26235bc (diff) | |
download | gitlab-ce-bf639fd504c84929ff8542eef81578a6745bf428.tar.gz |
Create detached merge request pipelinespersist-fulll-ref-path-for-mr-pipelines
By using `refs/merge-requests/:iid/head`
ok
ok
Improve naming nicely
Add nice tests
add nice tests
fix some more
revert
Diffstat (limited to 'app/services/merge_requests')
-rw-r--r-- | app/services/merge_requests/base_service.rb | 26 | ||||
-rw-r--r-- | app/services/merge_requests/create_service.rb | 2 | ||||
-rw-r--r-- | app/services/merge_requests/refresh_service.rb | 2 |
3 files changed, 21 insertions, 9 deletions
diff --git a/app/services/merge_requests/base_service.rb b/app/services/merge_requests/base_service.rb index 11ede5223e5..3e208241da5 100644 --- a/app/services/merge_requests/base_service.rb +++ b/app/services/merge_requests/base_service.rb @@ -54,7 +54,7 @@ module MergeRequests merge_request, merge_request.project, current_user, merge_request.assignee) end - def create_merge_request_pipeline(merge_request, user) + def create_pipeline_for(merge_request, user) return unless Feature.enabled?(:ci_merge_request_pipeline, merge_request.source_project, default_enabled: true) @@ -65,12 +65,24 @@ module MergeRequests return if merge_request.merge_request_pipeline_exists? return if merge_request.has_no_commits? - Ci::CreatePipelineService - .new(merge_request.source_project, user, ref: merge_request.source_branch) - .execute(:merge_request_event, - ignore_skip_ci: true, - save_on_errors: false, - merge_request: merge_request) + create_detached_merge_request_pipeline(merge_request, user) + end + + def create_detached_merge_request_pipeline(merge_request, user) + if can_use_merge_request_ref?(merge_request) + Ci::CreatePipelineService.new(merge_request.source_project, user, + ref: merge_request.ref_path) + .execute(:merge_request_event, merge_request: merge_request) + else + Ci::CreatePipelineService.new(merge_request.source_project, user, + ref: merge_request.source_branch) + .execute(:merge_request_event, merge_request: merge_request) + end + end + + def can_use_merge_request_ref?(merge_request) + Feature.enabled?(:ci_use_merge_request_ref, project, default_enabled: true) && + !merge_request.for_fork? end # Returns all origin and fork merge requests from `@project` satisfying passed arguments. diff --git a/app/services/merge_requests/create_service.rb b/app/services/merge_requests/create_service.rb index 02c2388c05c..06e46595b95 100644 --- a/app/services/merge_requests/create_service.rb +++ b/app/services/merge_requests/create_service.rb @@ -25,7 +25,7 @@ module MergeRequests def after_create(issuable) todo_service.new_merge_request(issuable, current_user) issuable.cache_merge_request_closes_issues!(current_user) - create_merge_request_pipeline(issuable, current_user) + create_pipeline_for(issuable, current_user) issuable.update_head_pipeline super diff --git a/app/services/merge_requests/refresh_service.rb b/app/services/merge_requests/refresh_service.rb index f5dc5a0256d..51d27673787 100644 --- a/app/services/merge_requests/refresh_service.rb +++ b/app/services/merge_requests/refresh_service.rb @@ -107,7 +107,7 @@ module MergeRequests end merge_request.mark_as_unchecked - create_merge_request_pipeline(merge_request, current_user) + create_pipeline_for(merge_request, current_user) UpdateHeadPipelineForMergeRequestWorker.perform_async(merge_request.id) end |