summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-04-25 08:28:27 +0000
committerRémy Coutable <remy@rymai.me>2016-04-25 08:28:27 +0000
commit2eee6a0cbc02c80eb0750a7ca77ee31c4cf0884f (patch)
treeea697f208b6cbbffb21e1668967f140619e14373 /lib
parent954af77b39b89555ba79063341010a10617e9e5b (diff)
parent4b23b5cdf44068f36364d6a6d61ea21e14d5df77 (diff)
downloadgitlab-ce-2eee6a0cbc02c80eb0750a7ca77ee31c4cf0884f.tar.gz
Merge branch 'fix/hidden-build-validation-in-ci-yaml' into 'master'
Add posibility to define a hidden job without 'script' in .gitlab-ci.yml References #15451 /cc @ayufan See merge request !3849
Diffstat (limited to 'lib')
-rw-r--r--lib/ci/gitlab_ci_yaml_processor.rb26
1 files changed, 11 insertions, 15 deletions
diff --git a/lib/ci/gitlab_ci_yaml_processor.rb b/lib/ci/gitlab_ci_yaml_processor.rb
index ff9887cba1e..504d3df9d34 100644
--- a/lib/ci/gitlab_ci_yaml_processor.rb
+++ b/lib/ci/gitlab_ci_yaml_processor.rb
@@ -61,23 +61,21 @@ module Ci
@stages = @config[:stages] || @config[:types]
@variables = @config[:variables] || {}
@cache = @config[:cache]
+ @jobs = {}
+
@config.except!(*ALLOWED_YAML_KEYS)
+ @config.each { |name, param| add_job(name, param) }
- # anything that doesn't have script is considered as unknown
- @config.each do |name, param|
- raise ValidationError, "Unknown parameter: #{name}" unless param.is_a?(Hash) && param.has_key?(:script)
- end
+ raise ValidationError, "Please define at least one job" if @jobs.none?
+ end
- unless @config.values.any?{|job| job.is_a?(Hash)}
- raise ValidationError, "Please define at least one job"
- end
+ def add_job(name, job)
+ return if name.to_s.start_with?('.')
- @jobs = {}
- @config.each do |key, job|
- next if key.to_s.start_with?('.')
- stage = job[:stage] || job[:type] || DEFAULT_STAGE
- @jobs[key] = { stage: stage }.merge(job)
- end
+ raise ValidationError, "Unknown parameter: #{name}" unless job.is_a?(Hash) && job.has_key?(:script)
+
+ stage = job[:stage] || job[:type] || DEFAULT_STAGE
+ @jobs[name] = { stage: stage }.merge(job)
end
def build_job(name, job)
@@ -112,8 +110,6 @@ module Ci
true
end
- private
-
def validate_global!
unless validate_array_of_strings(@before_script)
raise ValidationError, "before_script should be an array of strings"