summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2018-09-18 15:36:03 +0900
committerAlessio Caiazza <acaiazza@gitlab.com>2018-10-02 17:02:11 +0200
commite265fc3e28dbfe53d96646588a1587d5626e92de (patch)
tree49e65514b98037ad831c03ba81920d6840261553
parenta5d296e9be7cc48ddc75d04b117ae62bae7c9f5b (diff)
downloadgitlab-ce-e265fc3e28dbfe53d96646588a1587d5626e92de.tar.gz
Rename delayed to scheduled
-rw-r--r--app/models/ci/build.rb23
-rw-r--r--app/workers/build_finished_worker.rb1
-rw-r--r--app/workers/ci/build_schedule_worker.rb6
-rw-r--r--lib/gitlab/ci/config/entry/job.rb2
-rw-r--r--lib/gitlab/ci/status/build/factory.rb2
-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