summaryrefslogtreecommitdiff
path: root/lib/gitlab/ci/yaml_processor.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/ci/yaml_processor.rb')
-rw-r--r--lib/gitlab/ci/yaml_processor.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/gitlab/ci/yaml_processor.rb b/lib/gitlab/ci/yaml_processor.rb
index 296b0cfded2..553508c8638 100644
--- a/lib/gitlab/ci/yaml_processor.rb
+++ b/lib/gitlab/ci/yaml_processor.rb
@@ -86,11 +86,19 @@ module Gitlab
def validate_job_needs!(name, job)
return unless needs = job.dig(:needs, :job)
+ validate_duplicate_needs!(name, needs)
+
needs.each do |need|
validate_job_dependency!(name, need[:name], 'need')
end
end
+ def validate_duplicate_needs!(name, needs)
+ unless needs.uniq == needs
+ error!("#{name} has duplicate entries in the needs section.")
+ end
+ end
+
def validate_job_dependency!(name, dependency, dependency_type = 'dependency')
unless @jobs[dependency.to_sym]
error!("#{name} job: undefined #{dependency_type}: #{dependency}")