From c426763c42d41c9c0c9a9cfe544f3185eeaa984f Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 29 Mar 2017 20:49:47 +0900 Subject: [PATCH] Rename ScheduledTrigger to TriggerSchedule. Because table structure changed. --- app/models/ci/trigger.rb | 1 + ...heduled_trigger.rb => trigger_schedule.rb} | 10 +++---- ...r_worker.rb => trigger_schedule_worker.rb} | 5 ++-- config/gitlab.yml.example | 2 +- config/initializers/1_settings.rb | 6 ++-- spec/factories/ci/scheduled_triggers.rb | 5 ++-- spec/models/ci/scheduled_trigger_spec.rb | 29 ------------------- spec/models/ci/trigger_schedule_spec.rb | 29 +++++++++++++++++++ spec/models/ci/trigger_spec.rb | 1 + ...pec.rb => trigger_schedule_worker_spec.rb} | 16 +++++----- 10 files changed, 52 insertions(+), 52 deletions(-) rename app/models/ci/{scheduled_trigger.rb => trigger_schedule.rb} (63%) rename app/workers/{scheduled_trigger_worker.rb => trigger_schedule_worker.rb} (73%) delete mode 100644 spec/models/ci/scheduled_trigger_spec.rb create mode 100644 spec/models/ci/trigger_schedule_spec.rb rename spec/workers/{scheduled_trigger_worker_spec.rb => trigger_schedule_worker_spec.rb} (58%) diff --git a/app/models/ci/trigger.rb b/app/models/ci/trigger.rb index cba1d81a861..0a89f3e0640 100644 --- a/app/models/ci/trigger.rb +++ b/app/models/ci/trigger.rb @@ -8,6 +8,7 @@ module Ci belongs_to :owner, class_name: "User" has_many :trigger_requests, dependent: :destroy + has_one :trigger_schedule, dependent: :destroy validates :token, presence: true, uniqueness: true diff --git a/app/models/ci/scheduled_trigger.rb b/app/models/ci/trigger_schedule.rb similarity index 63% rename from app/models/ci/scheduled_trigger.rb rename to app/models/ci/trigger_schedule.rb index 9af274243a5..7efaa228a93 100644 --- a/app/models/ci/scheduled_trigger.rb +++ b/app/models/ci/trigger_schedule.rb @@ -1,11 +1,11 @@ module Ci - class ScheduledTrigger < ActiveRecord::Base + class TriggerSchedule < ActiveRecord::Base extend Ci::Model acts_as_paranoid belongs_to :project - belongs_to :owner, class_name: "User" + belongs_to :trigger def schedule_next_run! next_time = Ci::CronParser.new(cron, cron_time_zone).next_time_from_now @@ -14,8 +14,8 @@ module Ci end end - def update_last_run! - update_attributes(last_run_at: Time.now) - end + # def update_last_run! + # update_attributes(last_run_at: Time.now) + # end end end diff --git a/app/workers/scheduled_trigger_worker.rb b/app/workers/trigger_schedule_worker.rb similarity index 73% rename from app/workers/scheduled_trigger_worker.rb rename to app/workers/trigger_schedule_worker.rb index 5c2f03dee79..d55e9378e02 100644 --- a/app/workers/scheduled_trigger_worker.rb +++ b/app/workers/trigger_schedule_worker.rb @@ -1,9 +1,9 @@ -class ScheduledTriggerWorker +class TriggerScheduleWorker include Sidekiq::Worker include CronjobQueue def perform - Ci::ScheduledTrigger.where("next_run_at < ?", Time.now).find_each do |trigger| + Ci::TriggerSchedule.where("next_run_at < ?", Time.now).find_each do |trigger| begin Ci::CreatePipelineService.new(trigger.project, trigger.owner, ref: trigger.ref). execute(ignore_skip_ci: true, scheduled_trigger: true) @@ -11,7 +11,6 @@ class ScheduledTriggerWorker Rails.logger.error "#{trigger.id}: Failed to trigger job: #{e.message}" ensure trigger.schedule_next_run! - trigger.update_last_run! end end end diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example index 892064949ce..6fb67426c8b 100644 --- a/config/gitlab.yml.example +++ b/config/gitlab.yml.example @@ -181,7 +181,7 @@ production: &base stuck_ci_jobs_worker: cron: "0 * * * *" # Execute scheduled triggers - scheduled_trigger_worker: + trigger_schedule_worker: cron: "0 * * * *" # Remove expired build artifacts expire_build_artifacts_worker: diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index 15e6b382eb7..71342f435f1 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb @@ -315,9 +315,9 @@ Settings['cron_jobs'] ||= Settingslogic.new({}) Settings.cron_jobs['stuck_ci_jobs_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['stuck_ci_jobs_worker']['cron'] ||= '0 * * * *' Settings.cron_jobs['stuck_ci_jobs_worker']['job_class'] = 'StuckCiJobsWorker' -Settings.cron_jobs['scheduled_trigger_worker'] ||= Settingslogic.new({}) -Settings.cron_jobs['scheduled_trigger_worker']['cron'] ||= '0 * * * *' -Settings.cron_jobs['scheduled_trigger_worker']['job_class'] = 'ScheduledTriggerWorker' +Settings.cron_jobs['trigger_schedule_worker'] ||= Settingslogic.new({}) +Settings.cron_jobs['trigger_schedule_worker']['cron'] ||= '0 * * * *' +Settings.cron_jobs['trigger_schedule_worker']['job_class'] = 'TriggerScheduleWorker' Settings.cron_jobs['expire_build_artifacts_worker'] ||= Settingslogic.new({}) Settings.cron_jobs['expire_build_artifacts_worker']['cron'] ||= '50 * * * *' Settings.cron_jobs['expire_build_artifacts_worker']['job_class'] = 'ExpireBuildArtifactsWorker' diff --git a/spec/factories/ci/scheduled_triggers.rb b/spec/factories/ci/scheduled_triggers.rb index c97b2d14bd1..f909e343bf2 100644 --- a/spec/factories/ci/scheduled_triggers.rb +++ b/spec/factories/ci/scheduled_triggers.rb @@ -1,8 +1,7 @@ FactoryGirl.define do - factory :ci_scheduled_trigger, class: Ci::ScheduledTrigger do + factory :ci_trigger_schedule, class: Ci::TriggerSchedule do project factory: :project - owner factory: :user - ref 'master' + trigger factory: :ci_trigger trait :force_triggable do next_run_at Time.now - 1.month diff --git a/spec/models/ci/scheduled_trigger_spec.rb b/spec/models/ci/scheduled_trigger_spec.rb deleted file mode 100644 index bb5e969fa44..00000000000 --- a/spec/models/ci/scheduled_trigger_spec.rb +++ /dev/null @@ -1,29 +0,0 @@ -require 'spec_helper' - -describe Ci::ScheduledTrigger, models: true do - - describe 'associations' do - it { is_expected.to belong_to(:project) } - it { is_expected.to belong_to(:owner) } - end - - describe '#schedule_next_run!' do - subject { scheduled_trigger.schedule_next_run! } - - let(:scheduled_trigger) { create(:ci_scheduled_trigger, :cron_nightly_build, next_run_at: nil) } - - it 'updates next_run_at' do - is_expected.not_to be_nil - end - end - - describe '#update_last_run!' do - subject { scheduled_trigger.update_last_run! } - - let(:scheduled_trigger) { create(:ci_scheduled_trigger, :cron_nightly_build, last_run_at: nil) } - - it 'updates last_run_at' do - is_expected.not_to be_nil - end - end -end diff --git a/spec/models/ci/trigger_schedule_spec.rb b/spec/models/ci/trigger_schedule_spec.rb new file mode 100644 index 00000000000..14b8530a65b --- /dev/null +++ b/spec/models/ci/trigger_schedule_spec.rb @@ -0,0 +1,29 @@ +require 'spec_helper' + +describe Ci::TriggerSchedule, models: true do + + describe 'associations' do + it { is_expected.to belong_to(:project) } + it { is_expected.to belong_to(:trigger) } + end + + describe '#schedule_next_run!' do + subject { trigger_schedule.schedule_next_run! } + + let(:trigger_schedule) { create(:ci_trigger_schedule, :cron_nightly_build, next_run_at: nil) } + + it 'updates next_run_at' do + is_expected.not_to be_nil + end + end + + # describe '#update_last_run!' do + # subject { scheduled_trigger.update_last_run! } + + # let(:scheduled_trigger) { create(:ci_scheduled_trigger, :cron_nightly_build, last_run_at: nil) } + + # it 'updates last_run_at' do + # is_expected.not_to be_nil + # end + # end +end diff --git a/spec/models/ci/trigger_spec.rb b/spec/models/ci/trigger_spec.rb index 1bcb673cb16..42170de0180 100644 --- a/spec/models/ci/trigger_spec.rb +++ b/spec/models/ci/trigger_spec.rb @@ -7,6 +7,7 @@ describe Ci::Trigger, models: true do it { is_expected.to belong_to(:project) } it { is_expected.to belong_to(:owner) } it { is_expected.to have_many(:trigger_requests) } + it { is_expected.to have_one(:trigger_schedule) } end describe 'before_validation' do diff --git a/spec/workers/scheduled_trigger_worker_spec.rb b/spec/workers/trigger_schedule_worker_spec.rb similarity index 58% rename from spec/workers/scheduled_trigger_worker_spec.rb rename to spec/workers/trigger_schedule_worker_spec.rb index ffcb27602a1..6c7521e8339 100644 --- a/spec/workers/scheduled_trigger_worker_spec.rb +++ b/spec/workers/trigger_schedule_worker_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe ScheduledTriggerWorker do +describe TriggerScheduleWorker do let(:worker) { described_class.new } before do @@ -9,7 +9,7 @@ describe ScheduledTriggerWorker do context 'when there is a scheduled trigger within next_run_at' do before do - create(:ci_scheduled_trigger, :cron_nightly_build, :force_triggable) + create(:ci_trigger_schedule, :cron_nightly_build, :force_triggable) worker.perform end @@ -18,13 +18,13 @@ describe ScheduledTriggerWorker do end it 'schedules next_run_at' do - scheduled_trigger2 = create(:ci_scheduled_trigger, :cron_nightly_build) - expect(Ci::ScheduledTrigger.last.next_run_at).to eq(scheduled_trigger2.next_run_at) + trigger_schedule2 = create(:ci_trigger_schedule, :cron_nightly_build) + expect(Ci::TriggerSchedule.last.next_run_at).to eq(trigger_schedule2.next_run_at) end end context 'when there are no scheduled triggers within next_run_at' do - let!(:scheduled_trigger) { create(:ci_scheduled_trigger, :cron_nightly_build) } + let!(:trigger_schedule) { create(:ci_trigger_schedule, :cron_nightly_build) } before do worker.perform @@ -35,12 +35,12 @@ describe ScheduledTriggerWorker do end it 'do not reschedule next_run_at' do - expect(Ci::ScheduledTrigger.last.next_run_at).to eq(scheduled_trigger.next_run_at) + expect(Ci::TriggerSchedule.last.next_run_at).to eq(trigger_schedule.next_run_at) end end context 'when next_run_at is nil' do - let!(:scheduled_trigger) { create(:ci_scheduled_trigger, :cron_nightly_build, next_run_at: nil) } + let!(:trigger_schedule) { create(:ci_trigger_schedule, :cron_nightly_build, next_run_at: nil) } before do worker.perform @@ -51,7 +51,7 @@ describe ScheduledTriggerWorker do end it 'do not reschedule next_run_at' do - expect(Ci::ScheduledTrigger.last.next_run_at).to eq(scheduled_trigger.next_run_at) + expect(Ci::TriggerSchedule.last.next_run_at).to eq(trigger_schedule.next_run_at) end end end