Move job dependencies entry to the new CI config
This commit is contained in:
parent
f83bccfe4f
commit
dff10976da
|
|
@ -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])
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -1239,7 +1239,7 @@ EOT
|
|||
config = YAML.dump({ types: ["build", "test"], rspec: { script: "test", dependencies: "string" } })
|
||||
expect do
|
||||
GitlabCiYamlProcessor.new(config)
|
||||
end.to raise_error(GitlabCiYamlProcessor::ValidationError, "rspec job: dependencies parameter should be an array of strings")
|
||||
end.to raise_error(GitlabCiYamlProcessor::ValidationError, "jobs:rspec dependencies should be an array of strings")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue