diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-06-02 12:16:11 +0200 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-06-02 12:16:11 +0200 |
commit | fe0b2f81c7c9680a11288e0cdffc3e80dc1e8d58 (patch) | |
tree | fd19bea3c1118cb7438f0d2476bad322ccb5c421 /app/models/ci | |
parent | aa0d6b07b6a87459e75c69111643b9d6fe8a97c2 (diff) | |
download | gitlab-ce-fe0b2f81c7c9680a11288e0cdffc3e80dc1e8d58.tar.gz |
Refine implementation of pipeline stage seeds
Diffstat (limited to 'app/models/ci')
-rw-r--r-- | app/models/ci/pipeline.rb | 19 | ||||
-rw-r--r-- | app/models/ci/stage.rb | 11 |
2 files changed, 19 insertions, 11 deletions
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb index e64e16657fe..fb1d4720ba8 100644 --- a/app/models/ci/pipeline.rb +++ b/app/models/ci/pipeline.rb @@ -11,9 +11,7 @@ module Ci belongs_to :auto_canceled_by, class_name: 'Ci::Pipeline' belongs_to :pipeline_schedule, class_name: 'Ci::PipelineSchedule' - has_many :auto_canceled_pipelines, class_name: 'Ci::Pipeline', foreign_key: 'auto_canceled_by_id' - has_many :auto_canceled_jobs, class_name: 'CommitStatus', foreign_key: 'auto_canceled_by_id' - + has_many :stages has_many :statuses, class_name: 'CommitStatus', foreign_key: :commit_id has_many :builds, foreign_key: :commit_id has_many :trigger_requests, dependent: :destroy, foreign_key: :commit_id @@ -28,6 +26,9 @@ module Ci has_many :manual_actions, -> { latest.manual_actions }, foreign_key: :commit_id, class_name: 'Ci::Build' has_many :artifacts, -> { latest.with_artifacts_not_expired }, foreign_key: :commit_id, class_name: 'Ci::Build' + has_many :auto_canceled_pipelines, class_name: 'Ci::Pipeline', foreign_key: 'auto_canceled_by_id' + has_many :auto_canceled_jobs, class_name: 'CommitStatus', foreign_key: 'auto_canceled_by_id' + delegate :id, to: :project, prefix: true validates :sha, presence: { unless: :importing? } @@ -296,17 +297,13 @@ module Ci end def stage_seeds - return unless config_processor - - seeds_scope = { ref: ref, tag: tag?, trigger: trigger_requests.first } + return [] unless config_processor - @seeds ||= config_processor.stage_seeds(seeds_scope).tap do |seeds| - seeds.pipeline = self - end + @stage_seeds ||= config_processor.stage_seeds(self) end - def has_stages? - stage_seeds&.has_stages? + def has_stage_seeds? + stage_seeds.any? end def has_warnings? diff --git a/app/models/ci/stage.rb b/app/models/ci/stage.rb new file mode 100644 index 00000000000..59570924c8d --- /dev/null +++ b/app/models/ci/stage.rb @@ -0,0 +1,11 @@ +module Ci + class Stage < ActiveRecord::Base + extend Ci::Model + + belongs_to :project + belongs_to :pipeline + + has_many :statuses, class_name: 'CommitStatus', foreign_key: :commit_id + has_many :builds, foreign_key: :commit_id + end +end |