diff --git a/lib/gitlab/ci/config/node/environment.rb b/lib/gitlab/ci/config/node/environment.rb index 580fcda7549..d2d00f0ad81 100644 --- a/lib/gitlab/ci/config/node/environment.rb +++ b/lib/gitlab/ci/config/node/environment.rb @@ -11,20 +11,22 @@ module Gitlab ALLOWED_KEYS = %i[name url] validations do - validates :config, allowed_keys: ALLOWED_KEYS, if: :hash? - validates :name, presence: true - validates :url, - length: { maximum: 255 }, - allow_nil: true, - addressable_url: true - validate do unless hash? || string? errors.add(:config, 'should be a hash or a string') end end + + with_options if: :hash? do + validates :config, allowed_keys: ALLOWED_KEYS + + validates :url, + length: { maximum: 255 }, + addressable_url: true, + allow_nil: true + end end def hash? @@ -44,9 +46,10 @@ module Gitlab end def value - case @config.type + case @config when String then { name: @config } when Hash then @config + else {} end end end