diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-06-23 13:51:07 +0200 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-06-23 13:51:07 +0200 |
commit | 29b96d92c163d71fe5a0fdf37d6a3c57c51141cd (patch) | |
tree | 0a72ca04762af4d32822555cdf94d94cec7334dc /lib/gitlab/ci | |
parent | 2240807c1aaa7d7df313dde9775e3ec99f7ad1b3 (diff) | |
download | gitlab-ce-29b96d92c163d71fe5a0fdf37d6a3c57c51141cd.tar.gz |
Move CI stages configuration to new CI config
Diffstat (limited to 'lib/gitlab/ci')
-rw-r--r-- | lib/gitlab/ci/config.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/configurable.rb | 12 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/entry.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/factory.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/global.rb | 10 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/stages.rb | 22 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/undefined.rb | 4 |
7 files changed, 51 insertions, 5 deletions
diff --git a/lib/gitlab/ci/config.rb b/lib/gitlab/ci/config.rb index 1bea9c21f6a..61a2d2069a3 100644 --- a/lib/gitlab/ci/config.rb +++ b/lib/gitlab/ci/config.rb @@ -8,7 +8,7 @@ module Gitlab # Temporary delegations that should be removed after refactoring # delegate :before_script, :image, :services, :after_script, :variables, - to: :@global + :stages, to: :@global def initialize(config) @config = Loader.new(config).load! diff --git a/lib/gitlab/ci/config/node/configurable.rb b/lib/gitlab/ci/config/node/configurable.rb index 0fb9092dafa..61e4f1cee2c 100644 --- a/lib/gitlab/ci/config/node/configurable.rb +++ b/lib/gitlab/ci/config/node/configurable.rb @@ -38,14 +38,20 @@ module Gitlab private def node(symbol, entry_class, metadata) - factory = Node::Factory.new(entry_class) - .with(description: metadata[:description]) + define_method("#{symbol}_defined?") do + @nodes[symbol].try(:defined?) + end - define_method(symbol) do + define_method("#{symbol}_value") do raise Entry::InvalidError unless valid? @nodes[symbol].try(:value) end + alias_method symbol.to_sym, "#{symbol}_value".to_sym + + factory = Node::Factory.new(entry_class) + .with(description: metadata[:description]) + (@nodes ||= {}).merge!(symbol => factory) end end diff --git a/lib/gitlab/ci/config/node/entry.rb b/lib/gitlab/ci/config/node/entry.rb index 444a276d5c9..e6f738b1795 100644 --- a/lib/gitlab/ci/config/node/entry.rb +++ b/lib/gitlab/ci/config/node/entry.rb @@ -52,6 +52,10 @@ module Gitlab @config end + def defined? + true + end + def self.default end diff --git a/lib/gitlab/ci/config/node/factory.rb b/lib/gitlab/ci/config/node/factory.rb index 647b0c82a79..39b5784af25 100644 --- a/lib/gitlab/ci/config/node/factory.rb +++ b/lib/gitlab/ci/config/node/factory.rb @@ -22,7 +22,7 @@ module Gitlab raise InvalidFactory unless @attributes.has_key?(:value) ## - # We assume unspecified entry is undefined. + # We assume that unspecified entry is undefined. # See issue #18775. # if @attributes[:value].nil? diff --git a/lib/gitlab/ci/config/node/global.rb b/lib/gitlab/ci/config/node/global.rb index b5d177c5285..88f9bb3f43e 100644 --- a/lib/gitlab/ci/config/node/global.rb +++ b/lib/gitlab/ci/config/node/global.rb @@ -23,6 +23,16 @@ module Gitlab node :variables, Variables, description: 'Environment variables that will be used.' + + node :stages, Stages, + description: 'Configuration of stages for this pipeline.' + + node :types, Stages, + description: 'Stages for this pipeline (deprecated key).' + + def stages + stages_defined? ? stages_value : types_value + end end end end diff --git a/lib/gitlab/ci/config/node/stages.rb b/lib/gitlab/ci/config/node/stages.rb new file mode 100644 index 00000000000..88d88252bce --- /dev/null +++ b/lib/gitlab/ci/config/node/stages.rb @@ -0,0 +1,22 @@ +module Gitlab + module Ci + class Config + module Node + ## + # Entry that represents a configuration for pipeline stages. + # + class Stages < Entry + include Validatable + + validations do + validates :config, array_of_strings: true + end + + def self.default + %w(build test deploy) + end + end + end + end + end +end diff --git a/lib/gitlab/ci/config/node/undefined.rb b/lib/gitlab/ci/config/node/undefined.rb index e8a69b810e0..699605e1e3a 100644 --- a/lib/gitlab/ci/config/node/undefined.rb +++ b/lib/gitlab/ci/config/node/undefined.rb @@ -19,6 +19,10 @@ module Gitlab def value @config.default end + + def defined? + false + end end end end |