summaryrefslogtreecommitdiff
path: root/lib/gitlab/ci
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-06-23 13:51:07 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-06-23 13:51:07 +0200
commit29b96d92c163d71fe5a0fdf37d6a3c57c51141cd (patch)
tree0a72ca04762af4d32822555cdf94d94cec7334dc /lib/gitlab/ci
parent2240807c1aaa7d7df313dde9775e3ec99f7ad1b3 (diff)
downloadgitlab-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.rb2
-rw-r--r--lib/gitlab/ci/config/node/configurable.rb12
-rw-r--r--lib/gitlab/ci/config/node/entry.rb4
-rw-r--r--lib/gitlab/ci/config/node/factory.rb2
-rw-r--r--lib/gitlab/ci/config/node/global.rb10
-rw-r--r--lib/gitlab/ci/config/node/stages.rb22
-rw-r--r--lib/gitlab/ci/config/node/undefined.rb4
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