summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatija Čupić <matteeyah@gmail.com>2018-11-01 01:05:42 +0100
committerMatija Čupić <matteeyah@gmail.com>2018-11-01 01:05:42 +0100
commit56a08d233fe18892ae7a7c723662007e260a2c2d (patch)
tree1c2bc3ba48b74d6ebbd57638bd68161f81da4ffe
parent3c8dd4ccbfcbb20de88005d43c93cd476de6d5c7 (diff)
downloadgitlab-ce-56a08d233fe18892ae7a7c723662007e260a2c2d.tar.gz
Parallelize jobs in Gitlab::Ci::YamlProcessor
-rw-r--r--lib/gitlab/ci/config/entry/jobs.rb2
-rw-r--r--lib/gitlab/ci/config/normalizer.rb4
-rw-r--r--lib/gitlab/ci/yaml_processor.rb2
-rw-r--r--spec/lib/gitlab/ci/yaml_processor_spec.rb21
4 files changed, 7 insertions, 22 deletions
diff --git a/lib/gitlab/ci/config/entry/jobs.rb b/lib/gitlab/ci/config/entry/jobs.rb
index 1eab5927b56..96b6f2e5d6c 100644
--- a/lib/gitlab/ci/config/entry/jobs.rb
+++ b/lib/gitlab/ci/config/entry/jobs.rb
@@ -29,8 +29,6 @@ module Gitlab
# rubocop: disable CodeReuse/ActiveRecord
def compose!(deps = nil)
super do
- @config = Ci::Config::Normalizer.normalize_jobs(@config)
-
@config.each do |name, config|
node = hidden?(name) ? Entry::Hidden : Entry::Job
diff --git a/lib/gitlab/ci/config/normalizer.rb b/lib/gitlab/ci/config/normalizer.rb
index aa69dd44c5f..55efc7439c1 100644
--- a/lib/gitlab/ci/config/normalizer.rb
+++ b/lib/gitlab/ci/config/normalizer.rb
@@ -7,11 +7,11 @@ module Gitlab
parallelized_jobs = {}
parallelized_config = jobs_config.map do |name, config|
- if config&.[](:parallel)
+ if config[:parallel]
total = config[:parallel]
names = parallelize_job_names(name, total)
parallelized_jobs[name] = names
- Hash[names.collect { |job_name| [job_name.to_sym, config] }]
+ Hash[names.collect { |job_name| [job_name.to_sym, config.merge(name: job_name)] }]
else
{ name => config }
end
diff --git a/lib/gitlab/ci/yaml_processor.rb b/lib/gitlab/ci/yaml_processor.rb
index 612d733ad49..4977fa2ae24 100644
--- a/lib/gitlab/ci/yaml_processor.rb
+++ b/lib/gitlab/ci/yaml_processor.rb
@@ -103,7 +103,7 @@ module Gitlab
##
# Jobs
#
- @jobs = @ci_config.jobs
+ @jobs = Ci::Config::Normalizer.normalize_jobs(@ci_config.jobs)
@jobs.each do |name, job|
# logical validation for job
diff --git a/spec/lib/gitlab/ci/yaml_processor_spec.rb b/spec/lib/gitlab/ci/yaml_processor_spec.rb
index 8289a6b000b..4882087fcd3 100644
--- a/spec/lib/gitlab/ci/yaml_processor_spec.rb
+++ b/spec/lib/gitlab/ci/yaml_processor_spec.rb
@@ -136,19 +136,6 @@ module Gitlab
end
end
end
-
- describe 'parallel entry' do
- context 'when parallel is defined' do
- let(:config) do
- YAML.dump(rspec: { script: 'rspec',
- parallel: 2 })
- end
-
- it 'has the attributes' do
- expect(subject[:options][:parallel]).to eq 2
- end
- end
- end
end
describe '#stages_attributes' do
@@ -667,12 +654,12 @@ module Gitlab
parallel: parallel })
end
- it 'returns parallelized job' do
+ it 'returns parallelized jobs' do
config_processor = Gitlab::Ci::YamlProcessor.new(config)
- builds = config_processor.stage_builds_attributes("test")
+ builds = config_processor.stage_builds_attributes('test')
- expect(builds.size).to eq(1)
- expect(builds.first[:options][:parallel]).to eq(parallel)
+ expect(builds.size).to eq(5)
+ expect(builds.map { |build| build[:options] }).to all(include(parallel: parallel))
end
end
end