summaryrefslogtreecommitdiff
path: root/lib/ci
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-06-10 14:26:12 +0200
committerPhil Hughes <me@iamphill.com>2016-06-13 11:03:30 +0100
commit1501940ee0452f01acc5a228df17928e2f91cf39 (patch)
tree9f21ec9c97b896888e7297079d01082484e9c233 /lib/ci
parentee7c5539f38c5e66d06610d457efe983196372e2 (diff)
downloadgitlab-ce-1501940ee0452f01acc5a228df17928e2f91cf39.tar.gz
Validate artifacts:expire_in in yaml processor
Diffstat (limited to 'lib/ci')
-rw-r--r--lib/ci/gitlab_ci_yaml_processor.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/ci/gitlab_ci_yaml_processor.rb b/lib/ci/gitlab_ci_yaml_processor.rb
index b1297565ebe..88fa079f30d 100644
--- a/lib/ci/gitlab_ci_yaml_processor.rb
+++ b/lib/ci/gitlab_ci_yaml_processor.rb
@@ -282,6 +282,10 @@ module Ci
if job[:artifacts][:when] && !job[:artifacts][:when].in?(%w(on_success on_failure always))
raise ValidationError, "#{name} job: artifacts:when parameter should be on_success, on_failure or always"
end
+
+ if job[:artifacts][:expire_in] && !validate_duration(job[:artifacts][:expire_in])
+ raise ValidationError, "#{name} job: artifacts:expire_in parameter should be a duration"
+ end
end
def validate_job_dependencies!(name, job)
@@ -300,6 +304,12 @@ module Ci
end
end
+ def validate_duration(value)
+ value.is_a?(String) && ChronicDuration.parse(value)
+ rescue ChronicDuration::DurationParseError
+ false
+ end
+
def validate_array_of_strings(values)
values.is_a?(Array) && values.all? { |value| validate_string(value) }
end