From c03631a99618d43c66a1b9d0b4303d7253e45866 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 17 Sep 2018 20:00:29 +0900 Subject: [PATCH] Support new syntax --- app/models/ci/build.rb | 15 ++++++++------- app/services/ci/process_pipeline_service.rb | 2 +- lib/gitlab/ci/config/entry/job.rb | 12 ++++++------ .../{manual_with_auto_play.rb => delayed.rb} | 4 ++-- lib/gitlab/ci/status/build/factory.rb | 2 +- lib/gitlab/ci/yaml_processor.rb | 2 +- 6 files changed, 19 insertions(+), 18 deletions(-) rename lib/gitlab/ci/status/build/{manual_with_auto_play.rb => delayed.rb} (92%) diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index c2459b3f5f2..be4a6c553e1 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -186,6 +186,7 @@ module Ci end after_transition any => [:manual] do |build| + puts "#{self.class.name} - #{__callee__}: 1" build.run_after_commit do build.schedule_delayed_execution end @@ -236,22 +237,22 @@ module Ci action? && (manual? || retryable?) end - def autoplay? - manual? && options[:autoplay_in].present? + def delayed? + manual? && options[:start_in].present? end - def autoplay_at - ChronicDuration.parse(options[:autoplay_in])&.seconds&.from_now + def execute_at + ChronicDuration.parse(options[:start_in])&.seconds&.from_now end def schedule_delayed_execution - return unless autoplay? + return unless delayed? - create_build_schedule!(execute_at: autoplay_at) + create_build_schedule!(execute_at: execute_at) end def action? - self.when == 'manual' + self.when == 'manual' || self.when == 'delayed' end # rubocop: disable CodeReuse/ServiceClass diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index 69341a6c263..323075d404b 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -53,7 +53,7 @@ module Ci %w[failed] when 'always' %w[success failed skipped] - when 'manual' + when 'manual', 'delayed' %w[success skipped] else [] diff --git a/lib/gitlab/ci/config/entry/job.rb b/lib/gitlab/ci/config/entry/job.rb index 4376eb91a73..fa64041f7db 100644 --- a/lib/gitlab/ci/config/entry/job.rb +++ b/lib/gitlab/ci/config/entry/job.rb @@ -10,7 +10,7 @@ module Gitlab include Attributable ALLOWED_KEYS = %i[tags script only except type image services - allow_failure type stage when autoplay_in artifacts cache + allow_failure type stage when start_in artifacts cache dependencies before_script after_script variables environment coverage retry extends].freeze @@ -28,7 +28,7 @@ module Gitlab greater_than_or_equal_to: 0, less_than_or_equal_to: 2 } validates :when, - inclusion: { in: %w[on_success on_failure always manual], + inclusion: { in: %w[on_success on_failure always manual delayed], message: 'should be on_success, on_failure, ' \ 'always or manual' } @@ -36,11 +36,11 @@ module Gitlab validates :extends, type: String with_options if: :manual_action? do - validates :autoplay_in, duration: true, allow_nil: true + validates :start_in, duration: true, allow_nil: true end with_options unless: :manual_action? do - validates :autoplay_in, presence: false + validates :start_in, presence: false end end end @@ -92,7 +92,7 @@ module Gitlab :artifacts, :commands, :environment, :coverage, :retry attributes :script, :tags, :allow_failure, :when, :dependencies, - :retry, :extends, :autoplay_in + :retry, :extends, :start_in def compose!(deps = nil) super do @@ -119,7 +119,7 @@ module Gitlab end def manual_action? - self.when == 'manual' + self.when == 'manual' || self.when == 'delayed' end def ignored? diff --git a/lib/gitlab/ci/status/build/manual_with_auto_play.rb b/lib/gitlab/ci/status/build/delayed.rb similarity index 92% rename from lib/gitlab/ci/status/build/manual_with_auto_play.rb rename to lib/gitlab/ci/status/build/delayed.rb index f34f0be5d45..553d4cf8a71 100644 --- a/lib/gitlab/ci/status/build/manual_with_auto_play.rb +++ b/lib/gitlab/ci/status/build/delayed.rb @@ -2,7 +2,7 @@ module Gitlab module Ci module Status module Build - class ManualWithAutoPlay < Status::Extended + class Delayed < Status::Extended ### # TODO: Those are random values. We have to fix accoding to the UX review ### @@ -43,7 +43,7 @@ module Gitlab end def self.matches?(build, user) - build.autoplay? && !build.canceled? + build.delayed? && !build.canceled? end end end diff --git a/lib/gitlab/ci/status/build/factory.rb b/lib/gitlab/ci/status/build/factory.rb index e1b40472fc5..0fbab6e7673 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::ManualWithAutoPlay, + Status::Build::Delayed, Status::Build::Manual, Status::Build::Canceled, Status::Build::Created, diff --git a/lib/gitlab/ci/yaml_processor.rb b/lib/gitlab/ci/yaml_processor.rb index 5277b69a628..1dc6c28d24a 100644 --- a/lib/gitlab/ci/yaml_processor.rb +++ b/lib/gitlab/ci/yaml_processor.rb @@ -50,7 +50,7 @@ module Gitlab after_script: job[:after_script], environment: job[:environment], retry: job[:retry], - autoplay_in: job[:autoplay_in], + start_in: job[:start_in], }.compact } end