diff options
author | Kamil Trzciński <ayufan@ayufan.eu> | 2017-05-16 09:18:55 +0000 |
---|---|---|
committer | Kamil Trzciński <ayufan@ayufan.eu> | 2017-05-16 09:18:55 +0000 |
commit | b0ce5e1e307f5696aa3d9b030a3bce424becb3b5 (patch) | |
tree | 32b961370888361510bcfecd617d337d892f9beb /app | |
parent | 791dd5a6f134088f5cbf3ecf7bab23cf2f63b3a1 (diff) | |
parent | 02e156c2e726c2b06df87d371511694f0e03027e (diff) | |
download | gitlab-ce-b0ce5e1e307f5696aa3d9b030a3bce424becb3b5.tar.gz |
Merge branch 'zj-pipeline-schedule-owner' into 'master'
Foreign key for Pipeline schedule owner
Closes #31932
See merge request !11233
Diffstat (limited to 'app')
-rw-r--r-- | app/models/ci/pipeline_schedule.rb | 8 | ||||
-rw-r--r-- | app/workers/pipeline_schedule_worker.rb | 8 |
2 files changed, 15 insertions, 1 deletions
diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index 6d7cc83971e..cf6e53c4ca4 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -28,10 +28,18 @@ module Ci !active? end + def deactivate! + update_attribute(:active, false) + end + def importing_or_inactive? importing? || inactive? end + def runnable_by_owner? + Ability.allowed?(owner, :create_pipeline, project) + end + def set_next_run_at self.next_run_at = Gitlab::Ci::CronParser.new(cron, cron_timezone).next_time_from(Time.now) end diff --git a/app/workers/pipeline_schedule_worker.rb b/app/workers/pipeline_schedule_worker.rb index a449a765f7b..7eb0e84acb2 100644 --- a/app/workers/pipeline_schedule_worker.rb +++ b/app/workers/pipeline_schedule_worker.rb @@ -3,8 +3,14 @@ class PipelineScheduleWorker include CronjobQueue def perform - Ci::PipelineSchedule.active.where("next_run_at < ?", Time.now).find_each do |schedule| + Ci::PipelineSchedule.active.where("next_run_at < ?", Time.now) + .preload(:owner, :project).find_each do |schedule| begin + unless schedule.runnable_by_owner? + schedule.deactivate! + next + end + Ci::CreatePipelineService.new(schedule.project, schedule.owner, ref: schedule.ref) |