Class: Gitlab::Ci::Config::Normalizer

Inherits:
Object
  • Object
show all
Includes:
Utils::StrongMemoize
Defined in:
lib/gitlab/ci/config/normalizer.rb,
lib/gitlab/ci/config/normalizer/factory.rb,
lib/gitlab/ci/config/normalizer/matrix_strategy.rb,
lib/gitlab/ci/config/normalizer/number_strategy.rb

Defined Under Namespace

Classes: Factory, MatrixStrategy, NumberStrategy

Instance Method Summary collapse

Constructor Details

#initialize(jobs_config) ⇒ Normalizer

Returns a new instance of Normalizer.



9
10
11
12
# File 'lib/gitlab/ci/config/normalizer.rb', line 9

def initialize(jobs_config)
  @jobs_config = jobs_config
  @errors = []
end

Instance Method Details

#errorsObject

Deduplicate errors since multiple matrix jobs may generate identical errors for the same missing matrix variable



32
33
34
# File 'lib/gitlab/ci/config/normalizer.rb', line 32

def errors
  @errors.uniq
end

#normalize_jobsObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/gitlab/ci/config/normalizer.rb', line 14

def normalize_jobs
  return {} unless @jobs_config
  return @jobs_config if parallelized_jobs.empty?

  @jobs_config.each_with_object({}) do |(job_name, config), normalized_jobs|
    if parallelized_jobs.key?(job_name)
      parallelized_jobs[job_name].each do |job|
        expanded_config = config.deep_merge(job.attributes)
        normalized_jobs[job.name.to_sym] = normalize_job(job_name, expanded_config)
      end
    else
      normalized_jobs[job_name] = normalize_job(job_name, config)
    end
  end
end