diff options
Diffstat (limited to 'app/models/commit_status.rb')
-rw-r--r-- | app/models/commit_status.rb | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/app/models/commit_status.rb b/app/models/commit_status.rb index 7f2295dd4da..12e187024dd 100644 --- a/app/models/commit_status.rb +++ b/app/models/commit_status.rb @@ -192,12 +192,20 @@ class CommitStatus < ActiveRecord::Base private def ensure_pipeline_stage! - attributes = { name: stage, pipeline: pipeline, project: project } - - Ci::Stage.create!(attributes).tap do |stage| + (find_stage || create_stage!).tap do |stage| self.stage_id = stage.id yield stage end end + + def find_stage + pipeline.stages.find_by(name: stage) + end + + def create_stage! + Ci::Stage.create!(name: stage, + pipeline: pipeline, + project: project) + end end |