Extract class responsible for building a pipeline
This commit is contained in:
parent
8af29c214c
commit
9ad48a7438
|
@ -2,27 +2,24 @@ module Ci
|
|||
class CreatePipelineService < BaseService
|
||||
attr_reader :pipeline
|
||||
|
||||
SEQUENCE = [Gitlab::Ci::Pipeline::Chain::Validate::Abilities,
|
||||
SEQUENCE = [Gitlab::Ci::Pipeline::Chain::Build,
|
||||
Gitlab::Ci::Pipeline::Chain::Validate::Abilities,
|
||||
Gitlab::Ci::Pipeline::Chain::Validate::Repository,
|
||||
Gitlab::Ci::Pipeline::Chain::Validate::Config,
|
||||
Gitlab::Ci::Pipeline::Chain::Skip,
|
||||
Gitlab::Ci::Pipeline::Chain::Create].freeze
|
||||
|
||||
def execute(source, ignore_skip_ci: false, save_on_errors: true, trigger_request: nil, schedule: nil, &block)
|
||||
@pipeline = Ci::Pipeline.new(
|
||||
source: source,
|
||||
project: project,
|
||||
ref: ref,
|
||||
sha: sha,
|
||||
before_sha: before_sha,
|
||||
tag: tag_exists?,
|
||||
trigger_requests: Array(trigger_request),
|
||||
user: current_user,
|
||||
pipeline_schedule: schedule,
|
||||
protected: project.protected_for?(ref)
|
||||
)
|
||||
@pipeline = Ci::Pipeline.new
|
||||
|
||||
command = OpenStruct.new(ignore_skip_ci: ignore_skip_ci,
|
||||
command = OpenStruct.new(source: source,
|
||||
origin_ref: params[:ref],
|
||||
checkout_sha: params[:checkout_sha],
|
||||
after_sha: params[:after],
|
||||
before_sha: params[:before],
|
||||
trigger_request: trigger_request,
|
||||
schedule: schedule,
|
||||
ignore_skip_ci: ignore_skip_ci,
|
||||
save_incompleted: save_on_errors,
|
||||
seeds_block: block,
|
||||
project: project,
|
||||
|
@ -45,14 +42,6 @@ module Ci
|
|||
|
||||
private
|
||||
|
||||
def commit
|
||||
@commit ||= project.commit(origin_sha || origin_ref)
|
||||
end
|
||||
|
||||
def sha
|
||||
commit.try(:id)
|
||||
end
|
||||
|
||||
def update_merge_requests_head_pipeline
|
||||
return unless pipeline.latest?
|
||||
|
||||
|
@ -76,26 +65,6 @@ module Ci
|
|||
.created_or_pending
|
||||
end
|
||||
|
||||
def before_sha
|
||||
params[:checkout_sha] || params[:before] || Gitlab::Git::BLANK_SHA
|
||||
end
|
||||
|
||||
def origin_sha
|
||||
params[:checkout_sha] || params[:after]
|
||||
end
|
||||
|
||||
def origin_ref
|
||||
params[:ref]
|
||||
end
|
||||
|
||||
def tag_exists?
|
||||
project.repository.tag_exists?(ref)
|
||||
end
|
||||
|
||||
def ref
|
||||
@ref ||= Gitlab::Git.ref_name(origin_ref)
|
||||
end
|
||||
|
||||
def pipeline_created_counter
|
||||
@pipeline_created_counter ||= Gitlab::Metrics
|
||||
.counter(:pipelines_created_total, "Counter of pipelines created")
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
module Gitlab
|
||||
module Ci
|
||||
module Pipeline
|
||||
module Chain
|
||||
class Build < Chain::Base
|
||||
include Chain::Helpers
|
||||
|
||||
def perform!
|
||||
@pipeline.assign_attributes(
|
||||
source: @command.source,
|
||||
project: @project,
|
||||
ref: ref,
|
||||
sha: sha,
|
||||
before_sha: before_sha,
|
||||
tag: tag_exists?,
|
||||
trigger_requests: Array(@command.trigger_request),
|
||||
user: @current_user,
|
||||
pipeline_schedule: @command.schedule,
|
||||
protected: protected_ref?
|
||||
)
|
||||
end
|
||||
|
||||
def break?
|
||||
false
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def ref
|
||||
@ref ||= Gitlab::Git.ref_name(origin_ref)
|
||||
end
|
||||
|
||||
def sha
|
||||
@project.commit(origin_sha || origin_ref).try(:id)
|
||||
end
|
||||
|
||||
def origin_ref
|
||||
@command.origin_ref
|
||||
end
|
||||
|
||||
def origin_sha
|
||||
@command.checkout_sha || @command.after_sha
|
||||
end
|
||||
|
||||
def before_sha
|
||||
@command.checkout_sha || @command.before_sha || Gitlab::Git::BLANK_SHA
|
||||
end
|
||||
|
||||
def protected_ref?
|
||||
@project.protected_for?(ref)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue