Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeger-Jan van de Weg <zegerjan@gitlab.com>2017-05-08 01:35:56 +0300
committerKamil TrzciƄski <ayufan@ayufan.eu>2017-05-08 01:35:56 +0300
commit8df3997a92bffa2d29f3c559933a336b837cdb93 (patch)
tree5ee50876b35b6c5fd40607665f72468cfcee51fe /app/models
parent8a0cde81feb3c8f3af26eefa5cef7b72eda2d266 (diff)
Add Pipeline Schedules that supersedes experimental Trigger Schedule
Diffstat (limited to 'app/models')
-rw-r--r--app/models/ci/pipeline.rb1
-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.rb7
-rw-r--r--app/models/project.rb1
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'