diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/ci/pipeline.rb | 1 | ||||
-rw-r--r-- | app/models/ci/pipeline_schedule.rb (renamed from app/models/ci/trigger_schedule.rb) | 21 | ||||
-rw-r--r-- | app/models/ci/trigger.rb | 7 | ||||
-rw-r--r-- | app/models/project.rb | 1 |
4 files changed, 18 insertions, 12 deletions
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb index 4be4aa9ffe2..db994b861e5 100644 --- a/app/models/ci/pipeline.rb +++ b/app/models/ci/pipeline.rb @@ -9,6 +9,7 @@ module Ci belongs_to :project belongs_to :user 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' diff --git a/app/models/ci/trigger_schedule.rb b/app/models/ci/pipeline_schedule.rb index 012a18eb439..6d7cc83971e 100644 --- a/app/models/ci/trigger_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -1,24 +1,35 @@ module Ci - class TriggerSchedule < ActiveRecord::Base + class PipelineSchedule < ActiveRecord::Base extend Ci::Model include Importable acts_as_paranoid belongs_to :project - belongs_to :trigger + belongs_to :owner, class_name: 'User' + has_one :last_pipeline, -> { order(id: :desc) }, class_name: 'Ci::Pipeline' + has_many :pipelines - validates :trigger, presence: { unless: :importing? } validates :cron, unless: :importing_or_inactive?, cron: true, presence: { unless: :importing_or_inactive? } validates :cron_timezone, cron_timezone: true, presence: { unless: :importing_or_inactive? } validates :ref, presence: { unless: :importing_or_inactive? } + validates :description, presence: true before_save :set_next_run_at scope :active, -> { where(active: true) } + scope :inactive, -> { where(active: false) } + + def owned_by?(current_user) + owner == current_user + end + + def inactive? + !active? + end def importing_or_inactive? - importing? || !active? + importing? || inactive? end def set_next_run_at @@ -32,7 +43,7 @@ module Ci end def real_next_run( - worker_cron: Settings.cron_jobs['trigger_schedule_worker']['cron'], + worker_cron: Settings.cron_jobs['pipeline_schedule_worker']['cron'], worker_time_zone: Time.zone.name) Gitlab::Ci::CronParser.new(worker_cron, worker_time_zone) .next_time_from(next_run_at) diff --git a/app/models/ci/trigger.rb b/app/models/ci/trigger.rb index 2f64f70685a..6df41a3f301 100644 --- a/app/models/ci/trigger.rb +++ b/app/models/ci/trigger.rb @@ -8,14 +8,11 @@ module Ci belongs_to :owner, class_name: "User" has_many :trigger_requests - has_one :trigger_schedule, dependent: :destroy validates :token, presence: true, uniqueness: true before_validation :set_default_values - accepts_nested_attributes_for :trigger_schedule - def set_default_values self.token = SecureRandom.hex(15) if self.token.blank? end @@ -39,9 +36,5 @@ module Ci def can_access_project? self.owner_id.blank? || Ability.allowed?(self.owner, :create_build, project) end - - def trigger_schedule - super || build_trigger_schedule(project: project) - end end end diff --git a/app/models/project.rb b/app/models/project.rb index edbca3b537b..a0413b4e651 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -178,6 +178,7 @@ class Project < ActiveRecord::Base has_many :triggers, dependent: :destroy, class_name: 'Ci::Trigger' has_many :environments, dependent: :destroy has_many :deployments, dependent: :destroy + has_many :pipeline_schedules, dependent: :destroy, class_name: 'Ci::PipelineSchedule' has_many :active_runners, -> { active }, through: :runner_projects, source: :runner, class_name: 'Ci::Runner' |