Skip to content
Snippets Groups Projects

Build cascading train refs for parallel execution of Pipelines for merge trains

Merged Shinya Maeda requested to merge run-pipeline-for-merge-trains-on-train-ref into master
All threads resolved!
Compare and Show latest version
1 file
+ 11
5
Compare changes
  • Side-by-side
  • Inline
@@ -3,15 +3,15 @@ module MergeTrains
class CreatePipelineService < BaseService
include Gitlab::Utils::StrongMemoize
attr_reader :merge_request
attr_reader :merge_request, :previous_train_ref
def execute(merge_request, previous_train_ref)
@merge_request = merge_request
@merge_request, @previous_train_ref = merge_request, previous_train_ref
validation_status = validate
return validation_status unless validation_status[:status] == :success
merge_status = create_train_ref(previous_train_ref)
merge_status = create_train_ref
return error(merge_status[:message]) unless merge_status[:status] == :success
create_pipeline(merge_status)
@@ -27,13 +27,19 @@ def validate
success
end
def create_train_ref(previous_train_ref)
def create_train_ref
::MergeRequests::MergeToRefService.new(merge_request.project, merge_request.merge_user,
target_ref: merge_request.train_ref_path,
target_branch: previous_train_ref)
ref_path: previous_train_ref,
commit_message: commit_message)
.execute(merge_request)
end
def commit_message
"Merge branch #{merge_request.source_branch} with #{previous_train_ref} " \
"into #{merge_request.train_ref_path}"
end
def create_pipeline(merge_status)
pipeline = ::Ci::CreatePipelineService.new(merge_request.source_project, merge_request.merge_user,
ref: merge_request.merge_ref_path,
Loading