summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMatija Čupić <matteeyah@gmail.com>2018-09-07 20:53:28 +0200
committerMatija Čupić <matteeyah@gmail.com>2018-09-07 20:54:27 +0200
commit5f33690ebbe19dd8698bf8b432a5e6740305f007 (patch)
tree0f9714da4c8a8b2e70144df8967688550302efff /lib
parentc3e33f06c2920a9f032ee8166cccf8423bd24b78 (diff)
downloadgitlab-ce-5f33690ebbe19dd8698bf8b432a5e6740305f007.tar.gz
Load external files in config
CE mirror of 8e03a6619be44fdaf19a6c13284ea8e51377b311
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/ci/config.rb6
-rw-r--r--lib/gitlab/ci/config/entry/global.rb10
-rw-r--r--lib/gitlab/ci/config/entry/includes.rb22
-rw-r--r--lib/gitlab/ci/config/entry/validators.rb32
-rw-r--r--lib/gitlab/ci/external_files/external_file.rb3
-rw-r--r--lib/gitlab/ci/external_files/mapper.rb3
-rw-r--r--lib/gitlab/ci/external_files/processor.rb3
7 files changed, 7 insertions, 72 deletions
diff --git a/lib/gitlab/ci/config.rb b/lib/gitlab/ci/config.rb
index 46dad59eb8c..94b2fbc082b 100644
--- a/lib/gitlab/ci/config.rb
+++ b/lib/gitlab/ci/config.rb
@@ -1,15 +1,17 @@
module Gitlab
module Ci
- ##
+ #
# Base GitLab CI Configuration facade
#
class Config
ConfigError = Class.new(StandardError)
def initialize(config, opts = {})
- @config = Config::Extendable
+ initial_config = Config::Extendable
.new(build_config(config, opts))
.to_hash
+ processor = ::Gitlab::Ci::ExternalFiles::Processor.new(initial_config)
+ @config = processor.perform
@global = Entry::Global.new(@config)
@global.compose!
diff --git a/lib/gitlab/ci/config/entry/global.rb b/lib/gitlab/ci/config/entry/global.rb
index 401e566de77..a4ec8f0ff2f 100644
--- a/lib/gitlab/ci/config/entry/global.rb
+++ b/lib/gitlab/ci/config/entry/global.rb
@@ -33,15 +33,11 @@ module Gitlab
entry :cache, Entry::Cache,
description: 'Configure caching between build jobs.'
- entry :includes, Entry::Includes,
- description: 'External GitlLab Ci files'
-
helpers :before_script, :image, :services, :after_script,
- :variables, :stages, :types, :cache, :jobs, :includes
+ :variables, :stages, :types, :cache, :jobs
def compose!(_deps = nil)
super(self) do
- append_external_files!
compose_jobs!
compose_deprecated_entries!
end
@@ -49,10 +45,6 @@ module Gitlab
private
- def append_external_files!
- return if includes_value.nil?
- end
-
def compose_jobs!
factory = Entry::Factory.new(Entry::Jobs)
.value(@config.except(*self.class.nodes.keys))
diff --git a/lib/gitlab/ci/config/entry/includes.rb b/lib/gitlab/ci/config/entry/includes.rb
deleted file mode 100644
index c7a8c7960e8..00000000000
--- a/lib/gitlab/ci/config/entry/includes.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-module Gitlab
- module Ci
- class Config
- module Entry
- ##
- # Entry that represents a Docker image.
- #
- class Includes < Node
- include Validatable
-
- validations do
- validates :config, array_or_string: true, external_file: true, allow_nil: true
- end
-
- def value
- Array(@config)
- end
- end
- end
- end
- end
-end
diff --git a/lib/gitlab/ci/config/entry/validators.rb b/lib/gitlab/ci/config/entry/validators.rb
index 5b4d5d53821..b3c889ee92f 100644
--- a/lib/gitlab/ci/config/entry/validators.rb
+++ b/lib/gitlab/ci/config/entry/validators.rb
@@ -60,38 +60,6 @@ module Gitlab
end
end
- class ArrayOrStringValidator < ActiveModel::EachValidator
- def validate_each(record, attribute, value)
- unless value.is_a?(Array) || value.is_a?(String)
- record.errors.add(attribute, 'should be an array or a string')
- end
- end
- end
-
- class ExternalFileValidator < ActiveModel::EachValidator
- def validate_each(record, attribute, value)
- if value.is_a?(Array)
- value.each do |path|
- validate_external_file(path, record, attribute)
- end
- else
- validate_external_file(value, record, attribute)
- end
- end
-
- private
-
- def validate_external_file(value, record, attribute)
- unless valid_url?(value)
- record.errors.add(attribute, 'should be a valid local or remote file')
- end
- end
-
- def valid_url?(value)
- Gitlab::UrlSanitizer.valid?(value) || File.exists?("#{Rails.root}/#{value}")
- end
- end
-
class KeyValidator < ActiveModel::EachValidator
include LegacyValidationHelpers
diff --git a/lib/gitlab/ci/external_files/external_file.rb b/lib/gitlab/ci/external_files/external_file.rb
index 9bad8231c42..47d6d1c0fdc 100644
--- a/lib/gitlab/ci/external_files/external_file.rb
+++ b/lib/gitlab/ci/external_files/external_file.rb
@@ -4,7 +4,6 @@ module Gitlab
module Ci
module ExternalFiles
class ExternalFile
-
def initialize(value)
@value = value
end
@@ -18,7 +17,7 @@ module Gitlab
end
def valid?
- remote_url? || File.exists?(base_path)
+ remote_url? || File.exist?(base_path)
end
private
diff --git a/lib/gitlab/ci/external_files/mapper.rb b/lib/gitlab/ci/external_files/mapper.rb
index 5deb2f5a2e5..4b5d2ddd6a1 100644
--- a/lib/gitlab/ci/external_files/mapper.rb
+++ b/lib/gitlab/ci/external_files/mapper.rb
@@ -2,14 +2,11 @@ module Gitlab
module Ci
module ExternalFiles
class Mapper
-
def self.fetch_paths(values)
paths = values.fetch(:includes, [])
normalize_paths(paths)
end
- private
-
def self.normalize_paths(paths)
if paths.is_a?(String)
[build_external_file(paths)]
diff --git a/lib/gitlab/ci/external_files/processor.rb b/lib/gitlab/ci/external_files/processor.rb
index f38bc7633b5..221b6f58b98 100644
--- a/lib/gitlab/ci/external_files/processor.rb
+++ b/lib/gitlab/ci/external_files/processor.rb
@@ -25,7 +25,7 @@ module Gitlab
attr_reader :values, :external_files
def validate_external_file(external_file)
- unless external_file.valid?
+ unless external_file.valid?
raise ExternalFileError, 'External files should be a valid local or remote file'
end
end
@@ -39,7 +39,6 @@ module Gitlab
values.delete(:includes)
values
end
-
end
end
end