diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index 6ea574ed8ec..b608bfdb8b9 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -187,7 +187,7 @@ module Ci after_transition any => [:manual] do |build| build.run_after_commit do - build.schedule + build.schedule! end end @@ -241,17 +241,17 @@ module Ci end def scheduled? - build.build_schedule.exist? + build_schedule.present? end - def schedule + def schedule! return unless schedulable? create_build_schedule!(execute_at: execute_at) end - def unschedule - build&.build_schedule&.delete + def unschedule! + build_schedule.delete! end def execute_at diff --git a/app/workers/ci/build_schedule_worker.rb b/app/workers/ci/build_schedule_worker.rb index 9f81aa3c71e..84ef2edb767 100644 --- a/app/workers/ci/build_schedule_worker.rb +++ b/app/workers/ci/build_schedule_worker.rb @@ -7,13 +7,10 @@ module Ci def perform(build_id) ::Ci::Build.preload(:build_schedule).find_by(id: build_id).try do |build| - break unless build.build_schedule.present? + break unless build.scheduled? - begin - Ci::PlayBuildService.new(build.project, build.user).execute(build) - ensure - build.unschedule - end + build.unschedule! + Ci::PlayBuildService.new(build.project, build.user).execute(build) end end end