diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-07-20 14:15:18 +0200 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-07-20 14:15:18 +0200 |
commit | dff10976da42cc729069cddf0f032347fe2f6b14 (patch) | |
tree | 403b1f281e0e6196d1ecbd3b76fdabfa7162272b /lib | |
parent | f83bccfe4f98281ed80c95189c5f7ed77799b2b3 (diff) | |
download | gitlab-ce-dff10976da42cc729069cddf0f032347fe2f6b14.tar.gz |
Move job dependencies entry to the new CI config
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ci/gitlab_ci_yaml_processor.rb | 24 | ||||
-rw-r--r-- | lib/gitlab/ci/config/node/job.rb | 4 |
2 files changed, 13 insertions, 15 deletions
diff --git a/lib/ci/gitlab_ci_yaml_processor.rb b/lib/ci/gitlab_ci_yaml_processor.rb index 24601fdfe85..a2e8bd22a52 100644 --- a/lib/ci/gitlab_ci_yaml_processor.rb +++ b/lib/ci/gitlab_ci_yaml_processor.rb @@ -98,21 +98,22 @@ module Ci @jobs = @ci_config.jobs @jobs.each do |name, job| - validate_job!(name, job) + # logical validation for job + + validate_job_stage!(name, job) + validate_job_dependencies!(name, job) end end def yaml_variables(name) - variables = global_variables.merge(job_variables(name)) + variables = (@variables || {}) + .merge(job_variables(name)) + variables.map do |key, value| { key: key, value: value, public: true } end end - def global_variables - @variables || {} - end - def job_variables(name) job = @jobs[name.to_sym] return {} unless job @@ -120,21 +121,16 @@ module Ci job[:variables] || {} end - def validate_job!(name, job) - validate_job_stage!(name, job) if job[:stage] - validate_job_dependencies!(name, job) if job[:dependencies] - end - def validate_job_stage!(name, job) + return unless job[:stage] + unless job[:stage].is_a?(String) && job[:stage].in?(@stages) raise ValidationError, "#{name} job: stage parameter should be #{@stages.join(", ")}" end end def validate_job_dependencies!(name, job) - unless validate_array_of_strings(job[:dependencies]) - raise ValidationError, "#{name} job: dependencies parameter should be an array of strings" - end + return unless job[:dependencies] stage_index = @stages.index(job[:stage]) diff --git a/lib/gitlab/ci/config/node/job.rb b/lib/gitlab/ci/config/node/job.rb index dc0813a8c18..ace79d829f2 100644 --- a/lib/gitlab/ci/config/node/job.rb +++ b/lib/gitlab/ci/config/node/job.rb @@ -13,7 +13,7 @@ module Gitlab type stage when artifacts cache dependencies before_script after_script variables environment] - attributes :tags, :allow_failure, :when, :environment + attributes :tags, :allow_failure, :when, :environment, :dependencies validations do validates :config, allowed_keys: ALLOWED_KEYS @@ -37,6 +37,8 @@ module Gitlab format: { with: Gitlab::Regex.environment_name_regex, message: Gitlab::Regex.environment_name_regex_message } + + validates :dependencies, array_of_strings: true end end |