summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2017-07-21 17:49:32 +0800
committerLin Jen-Shin <godfat@godfat.org>2017-07-21 17:49:32 +0800
commit8a444484345806dcbc0312d770b185edde1edb67 (patch)
tree26c7f6040a759c84b0c2f393bfdc9ef8b6370c33
parentde01b862254be634a0602c6a8875cdda0538354f (diff)
downloadgitlab-ce-8a444484345806dcbc0312d770b185edde1edb67.tar.gz
Extract validations
-rw-r--r--app/services/ci/create_pipeline_service.rb48
1 files changed, 24 insertions, 24 deletions
diff --git a/app/services/ci/create_pipeline_service.rb b/app/services/ci/create_pipeline_service.rb
index 3ff698b6437..21e2ef153de 100644
--- a/app/services/ci/create_pipeline_service.rb
+++ b/app/services/ci/create_pipeline_service.rb
@@ -15,12 +15,34 @@ module Ci
pipeline_schedule: schedule
)
+ result = validate(current_user || trigger_request.trigger.owner,
+ ignore_skip_ci: ignore_skip_ci,
+ save_on_errors: save_on_errors)
+
+ return result if result
+
+ Ci::Pipeline.transaction do
+ update_merge_requests_head_pipeline if pipeline.save
+
+ Ci::CreatePipelineStagesService
+ .new(project, current_user)
+ .execute(pipeline)
+ end
+
+ cancel_pending_pipelines if project.auto_cancel_pending_pipelines?
+
+ pipeline_created_counter.increment(source: source)
+
+ pipeline.tap(&:process!)
+ end
+
+ private
+
+ def validate(triggering_user, ignore_skip_ci:, save_on_errors:)
unless project.builds_enabled?
return error('Pipeline is disabled')
end
- triggering_user = current_user || trigger_request.trigger.owner
-
unless allowed_to_trigger_pipeline?(triggering_user)
if can?(triggering_user, :create_pipeline, project)
return error("Insufficient permissions for protected ref '#{ref}'")
@@ -52,28 +74,6 @@ module Ci
unless pipeline.has_stage_seeds?
return error('No stages / jobs for this pipeline.')
end
-
- process! do
- pipeline_created_counter.increment(source: source)
- end
- end
-
- private
-
- def process!
- Ci::Pipeline.transaction do
- update_merge_requests_head_pipeline if pipeline.save
-
- Ci::CreatePipelineStagesService
- .new(project, current_user)
- .execute(pipeline)
- end
-
- cancel_pending_pipelines if project.auto_cancel_pending_pipelines?
-
- yield
-
- pipeline.tap(&:process!)
end
def allowed_to_trigger_pipeline?(triggering_user)