diff options
author | Grzegorz Bizon <grzegorz@gitlab.com> | 2019-01-10 10:50:19 +0300 |
---|---|---|
committer | Grzegorz Bizon <grzegorz@gitlab.com> | 2019-01-10 10:50:19 +0300 |
commit | 5f258b0cea1454e00cc65e6bd485af83baac05e6 (patch) | |
tree | 0131ae5b3b1f37a59ec5aab877133b5ce67c8c27 | |
parent | b2e807e62464a77dd9f4c50f4b339d4cd4f89718 (diff) | |
parent | 09dc4956ad86877ec0112018fd05f311be1743cf (diff) |
Merge branch '55628-artifacts-from-a-job-defined-after-a-parallel-job-are-not-downloaded' into 'master'
Resolve "Artifacts from a job defined after a `parallel` job are NOT downloaded"
Closes #55628
See merge request gitlab-org/gitlab-ce!24273
3 files changed, 27 insertions, 1 deletions
diff --git a/changelogs/unreleased/55628-artifacts-from-a-job-defined-after-a-parallel-job-are-not-downloaded.yml b/changelogs/unreleased/55628-artifacts-from-a-job-defined-after-a-parallel-job-are-not-downloaded.yml new file mode 100644 index 00000000000..071036cd568 --- /dev/null +++ b/changelogs/unreleased/55628-artifacts-from-a-job-defined-after-a-parallel-job-are-not-downloaded.yml @@ -0,0 +1,5 @@ +--- +title: Handle regular job dependencies next to parallelized job dependencies. +merge_request: 24273 +author: +type: fixed diff --git a/lib/gitlab/ci/config/normalizer.rb b/lib/gitlab/ci/config/normalizer.rb index b7743bd2090..191f5d09645 100644 --- a/lib/gitlab/ci/config/normalizer.rb +++ b/lib/gitlab/ci/config/normalizer.rb @@ -46,7 +46,8 @@ module Gitlab parallelized_job_names = @parallelized_jobs.keys.map(&:to_s) parallelized_config.each_with_object({}) do |(job_name, config), hash| if config[:dependencies] && (intersection = config[:dependencies] & parallelized_job_names).any? - deps = intersection.map { |dep| @parallelized_jobs[dep.to_sym].map(&:first) }.flatten + parallelized_deps = intersection.map { |dep| @parallelized_jobs[dep.to_sym].map(&:first) }.flatten + deps = config[:dependencies] - intersection + parallelized_deps hash[job_name] = config.merge(dependencies: deps) else hash[job_name] = config diff --git a/spec/lib/gitlab/ci/config/normalizer_spec.rb b/spec/lib/gitlab/ci/config/normalizer_spec.rb index 97926695b6e..cd880177170 100644 --- a/spec/lib/gitlab/ci/config/normalizer_spec.rb +++ b/spec/lib/gitlab/ci/config/normalizer_spec.rb @@ -62,5 +62,25 @@ describe Gitlab::Ci::Config::Normalizer do expect(subject[:other_job][:dependencies]).not_to include(job_name) end end + + context 'when there are dependencies which are both parallelized and not' do + let(:config) do + { + job_name => job_config, + other_job: { script: 'echo 1' }, + final_job: { script: 'echo 1', dependencies: [job_name.to_s, "other_job"] } + } + end + + it 'parallelizes dependencies' do + job_names = ["rspec 1/5", "rspec 2/5", "rspec 3/5", "rspec 4/5", "rspec 5/5"] + + expect(subject[:final_job][:dependencies]).to include(*job_names) + end + + it 'includes the regular job in dependencies' do + expect(subject[:final_job][:dependencies]).to include('other_job') + end + end end end |