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:
authorShinya Maeda <gitlab.shinyamaeda@gmail.com>2017-03-22 21:54:49 +0300
committerShinya Maeda <gitlab.shinyamaeda@gmail.com>2017-04-06 17:46:58 +0300
commit5f715f1d32c6f5ce25b3721bde8f476173afadc8 (patch)
treeaae1982a02c2c53c0da9229154e45b6fecb01f61 /app/workers
parent46e4ed6bd0c8c256bce6d35b4bb992d77fd09971 (diff)
Add scheduled_trigger model. Add cron parser. Plus, specs.
Diffstat (limited to 'app/workers')
-rw-r--r--app/workers/scheduled_trigger_worker.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/app/workers/scheduled_trigger_worker.rb b/app/workers/scheduled_trigger_worker.rb
new file mode 100644
index 00000000000..7dc17aa4332
--- /dev/null
+++ b/app/workers/scheduled_trigger_worker.rb
@@ -0,0 +1,18 @@
+class ScheduledTriggerWorker
+ include Sidekiq::Worker
+ include CronjobQueue
+
+ def perform
+ # TODO: Update next_run_at
+
+ Ci::ScheduledTriggers.where("next_run_at < ?", Time.now).find_each do |trigger|
+ begin
+ Ci::CreateTriggerRequestService.new.execute(trigger.project, trigger, trigger.ref)
+ rescue => e
+ Rails.logger.error "#{trigger.id}: Failed to trigger job: #{e.message}"
+ ensure
+ trigger.schedule_next_run!
+ end
+ end
+ end
+end