diff options
Diffstat (limited to 'lib/gitlab/ci/config')
-rw-r--r-- | lib/gitlab/ci/config/node/environment.rb | 33 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/job.rb | 6 |
2 files changed, 30 insertions, 9 deletions
diff --git a/lib/gitlab/ci/config/node/environment.rb b/lib/gitlab/ci/config/node/environment.rb index 6f04180039e..e2fb1ab131e 100644 --- a/lib/gitlab/ci/config/node/environment.rb +++ b/lib/gitlab/ci/config/node/environment.rb @@ -3,28 +3,45 @@ module Gitlab class Config module Node ## - # Entry that represents environment variables. + # Entry that represents an environment. # class Environment < Entry include Validatable validations do - include LegacyValidationHelpers + validates :name, presence: true validate do - unless string_or_array_of_strings?(config) - errors.add(:config, - 'should be a string or an array of strings') + unless hash? || string? + errors.add(:config, 'should be a hash or a string') end end + end + + def hash? + @config.is_a?(Hash) + end + + def string? + @config.is_a?(String) + end - def string_or_array_of_strings?(field) - validate_string(field) || validate_array_of_strings(field) + def name + case + when string? then @config + when hash? then @config[:name] end end + def url + @config[:url] if hash? + end + def value - Array(@config) + case + when string? then { name: @config } + when hash? then @config + end end end end diff --git a/lib/gitlab/ci/config/node/job.rb b/lib/gitlab/ci/config/node/job.rb index 0cbdf7619c0..e90e80171a4 100644 --- a/lib/gitlab/ci/config/node/job.rb +++ b/lib/gitlab/ci/config/node/job.rb @@ -13,7 +13,7 @@ module Gitlab type stage when artifacts cache dependencies before_script after_script variables environment] - attributes :tags, :allow_failure, :when, :environment, :dependencies + attributes :tags, :allow_failure, :when, :dependencies validations do validates :config, allowed_keys: ALLOWED_KEYS @@ -78,6 +78,9 @@ module Gitlab node :artifacts, Artifacts, description: 'Artifacts configuration for this job.' + node :environment, Environment, + description: 'Environment configuration for this job.' + helpers :before_script, :script, :stage, :type, :after_script, :cache, :image, :services, :only, :except, :variables, :artifacts, :commands @@ -133,6 +136,7 @@ module Gitlab only: only, except: except, variables: variables_defined? ? variables : nil, + environment: environment_defined? ? environment : nil, artifacts: artifacts, after_script: after_script } end |