diff options
author | Kamil Trzcinski <ayufan@ayufan.eu> | 2015-08-18 17:58:32 +0100 |
---|---|---|
committer | Kamil Trzcinski <ayufan@ayufan.eu> | 2015-08-19 17:43:56 +0100 |
commit | 568715fce6d1c022bce065f44a1886f966cc4a95 (patch) | |
tree | ab1c397c7c075b4976b0d4c1eb1b53d6814fd416 /lib/gitlab_ci_yaml_processor.rb | |
parent | aab30f1c979b863cb38ac1140f1f35cb7f0bdafc (diff) | |
download | gitlab-ci-yaml-validation.tar.gz |
Make the YAML validation more stricteryaml-validation
- deny all globals that are not hases and doesn't contain script, the script is required now
- verify that script is either string or array of an strings
Diffstat (limited to 'lib/gitlab_ci_yaml_processor.rb')
-rw-r--r-- | lib/gitlab_ci_yaml_processor.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/gitlab_ci_yaml_processor.rb b/lib/gitlab_ci_yaml_processor.rb index e1da311..b685867 100644 --- a/lib/gitlab_ci_yaml_processor.rb +++ b/lib/gitlab_ci_yaml_processor.rb @@ -46,8 +46,9 @@ class GitlabCiYamlProcessor @variables = @config[:variables] || {} @config.except!(*ALLOWED_YAML_KEYS) + # 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) + raise ValidationError, "Unknown parameter: #{name}" unless param.is_a?(Hash) && param.has_key?(:script) end unless @config.values.any?{|job| job.is_a?(Hash)} @@ -148,6 +149,10 @@ class GitlabCiYamlProcessor end end + if !job[:script].is_a?(String) && !validate_array_of_strings(job[:script]) + raise ValidationError, "#{name}: script should be a string or an array of a strings" + end + if job[:stage] unless job[:stage].is_a?(String) && job[:stage].in?(stages) raise ValidationError, "#{name}: stage parameter should be #{stages.join(", ")}" |