Respect needs for artifacts

When `needs:` is defined, the value of it is
not respected when returning a list of artifacts
to the runner from the job.
This commit is contained in:
Kamil Trzciński 2019-08-02 13:28:59 +02:00
parent db104aaf92
commit 181b9b3e73
2 changed files with 21 additions and 12 deletions

View File

@ -715,18 +715,14 @@ module Ci
depended_jobs = depends_on_builds
# find all jobs that are dependent on
if options[:dependencies].present?
depended_jobs = depended_jobs.select do |job|
options[:dependencies].include?(job.name)
end
# find all jobs that are needed
if Feature.enabled?(:ci_dag_support, project) && needs.exists?
depended_jobs = depended_jobs.where(name: needs.select(:name))
end
# find all jobs that are needed by this one
if options[:needs].present?
depended_jobs = depended_jobs.select do |job|
options[:needs].include?(job.name)
end
# find all jobs that are dependent on
if options[:dependencies].present?
depended_jobs = depended_jobs.where(name: options[:dependencies])
end
depended_jobs

View File

@ -630,12 +630,17 @@ describe Ci::Build do
create(:ci_build,
pipeline: pipeline, name: 'final',
stage_idx: 3, stage: 'deploy', options: {
dependencies: dependencies,
needs: needs
dependencies: dependencies
}
)
end
before do
needs.to_a.each do |need|
create(:ci_build_need, build: final, name: need)
end
end
subject { final.dependencies }
context 'when depedencies are defined' do
@ -648,6 +653,14 @@ describe Ci::Build do
let(:needs) { %w(build rspec staging) }
it { is_expected.to contain_exactly(build, rspec_test, staging) }
context 'when ci_dag_support is disabled' do
before do
stub_feature_flags(ci_dag_support: false)
end
it { is_expected.to contain_exactly(build, rspec_test, rubocop_test, staging) }
end
end
context 'when needs and dependencies are defined' do