diff options
author | Shinya Maeda <shinya@gitlab.com> | 2018-09-18 15:36:03 +0900 |
---|---|---|
committer | Alessio Caiazza <acaiazza@gitlab.com> | 2018-10-02 17:02:11 +0200 |
commit | e265fc3e28dbfe53d96646588a1587d5626e92de (patch) | |
tree | 49e65514b98037ad831c03ba81920d6840261553 | |
parent | a5d296e9be7cc48ddc75d04b117ae62bae7c9f5b (diff) | |
download | gitlab-ce-e265fc3e28dbfe53d96646588a1587d5626e92de.tar.gz |
Rename delayed to scheduled
-rw-r--r-- | app/models/ci/build.rb | 23 | ||||
-rw-r--r-- | app/workers/build_finished_worker.rb | 1 | ||||
-rw-r--r-- | app/workers/ci/build_schedule_worker.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/ci/config/entry/job.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/ci/status/build/factory.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/ci/status/build/scheduled.rb (renamed from lib/gitlab/ci/status/build/delayed.rb) | 22 |
6 files changed, 34 insertions, 22 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index be4a6c553e1..6ea574ed8ec 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -186,9 +186,8 @@ module Ci end after_transition any => [:manual] do |build| - puts "#{self.class.name} - #{__callee__}: 1" build.run_after_commit do - build.schedule_delayed_execution + build.schedule end end @@ -237,22 +236,30 @@ module Ci action? && (manual? || retryable?) end - def delayed? + def schedulable? manual? && options[:start_in].present? end - def execute_at - ChronicDuration.parse(options[:start_in])&.seconds&.from_now + def scheduled? + build.build_schedule.exist? end - def schedule_delayed_execution - return unless delayed? + def schedule + return unless schedulable? create_build_schedule!(execute_at: execute_at) end + def unschedule + build&.build_schedule&.delete + end + + def execute_at + ChronicDuration.parse(options[:start_in])&.seconds&.from_now + end + def action? - self.when == 'manual' || self.when == 'delayed' + %w[manual delayed].include?(self.when) end # rubocop: disable CodeReuse/ServiceClass diff --git a/app/workers/build_finished_worker.rb b/app/workers/build_finished_worker.rb index 889384d6be8..51cbbe8882e 100644 --- a/app/workers/build_finished_worker.rb +++ b/app/workers/build_finished_worker.rb @@ -9,7 +9,6 @@ class BuildFinishedWorker # rubocop: disable CodeReuse/ActiveRecord def perform(build_id) Ci::Build.find_by(id: build_id).try do |build| - build&.build_schedule&.delete # We execute that in sync as this access the files in order to access local file, and reduce IO BuildTraceSectionsWorker.new.perform(build.id) BuildCoverageWorker.new.perform(build.id) diff --git a/app/workers/ci/build_schedule_worker.rb b/app/workers/ci/build_schedule_worker.rb index 448fb5bf41e..9f81aa3c71e 100644 --- a/app/workers/ci/build_schedule_worker.rb +++ b/app/workers/ci/build_schedule_worker.rb @@ -9,7 +9,11 @@ module Ci ::Ci::Build.preload(:build_schedule).find_by(id: build_id).try do |build| break unless build.build_schedule.present? - Ci::PlayBuildService.new(build.project, build.user).execute(build) + begin + Ci::PlayBuildService.new(build.project, build.user).execute(build) + ensure + build.unschedule + end end end end diff --git a/lib/gitlab/ci/config/entry/job.rb b/lib/gitlab/ci/config/entry/job.rb index fa64041f7db..02589d147ef 100644 --- a/lib/gitlab/ci/config/entry/job.rb +++ b/lib/gitlab/ci/config/entry/job.rb @@ -119,7 +119,7 @@ module Gitlab end def manual_action? - self.when == 'manual' || self.when == 'delayed' + %w[manual delayed].include?(self.when) end def ignored? diff --git a/lib/gitlab/ci/status/build/factory.rb b/lib/gitlab/ci/status/build/factory.rb index 0fbab6e7673..3f762c42747 100644 --- a/lib/gitlab/ci/status/build/factory.rb +++ b/lib/gitlab/ci/status/build/factory.rb @@ -5,7 +5,7 @@ module Gitlab class Factory < Status::Factory def self.extended_statuses [[Status::Build::Erased, - Status::Build::Delayed, + Status::Build::Scheduled, Status::Build::Manual, Status::Build::Canceled, Status::Build::Created, diff --git a/lib/gitlab/ci/status/build/delayed.rb b/lib/gitlab/ci/status/build/scheduled.rb index 553d4cf8a71..93da8fb9538 100644 --- a/lib/gitlab/ci/status/build/delayed.rb +++ b/lib/gitlab/ci/status/build/scheduled.rb @@ -2,11 +2,7 @@ module Gitlab module Ci module Status module Build - class Delayed < Status::Extended - ### - # TODO: Those are random values. We have to fix accoding to the UX review - ### - + class Scheduled < Status::Extended ### # Core override ### @@ -23,7 +19,7 @@ module Gitlab end def favicon - 'favicon_status_manual_with_auto_play' + 'favicon_status_scheduled' end ### @@ -33,17 +29,23 @@ module Gitlab { image: 'illustrations/canceled-job_empty.svg', size: 'svg-394', - title: _('This job is a scheduled job with manual actions!'), - content: _('auto playyyyyyyyyyyyyy! This job depends on a user to trigger its process. Often they are used to deploy code to production environments') + title: _("This is a scheduled to run in ") + " #{execute_in}", + content: _("This job will automatically run after it's timer finishes. Often they are used for incremental roll-out deploys to production environments. When unscheduled it converts into a manual action.") } end def status_tooltip - @status.status_tooltip + " (scheulded) : Execute in #{subject.build_schedule.execute_in.round} sec" + "scheduled manual action (#{execute_in})" end def self.matches?(build, user) - build.delayed? && !build.canceled? + build.schedulable? && !build.canceled? + end + + private + + def execute_in + Time.at(subject.build_schedule.execute_in).utc.strftime("%H:%M:%S") end end end |