summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/ci/build.rb8
-rw-r--r--spec/models/build_spec.rb12
2 files changed, 17 insertions, 3 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 77a2dec4f72..6c9ce0dc481 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -290,13 +290,15 @@ module Ci
end
def can_be_served?(runner)
- if tag_list.empty? && !runner.run_untagged?
- return false
- end
+ return false unless has_tags? || runner.run_untagged?
(tag_list - runner.tag_list).empty?
end
+ def has_tags?
+ tag_list.any?
+ end
+
def any_runners_online?
project.any_runners? { |runner| runner.active? && runner.online? && can_be_served?(runner) }
end
diff --git a/spec/models/build_spec.rb b/spec/models/build_spec.rb
index 5da54e07de8..abae3271a5c 100644
--- a/spec/models/build_spec.rb
+++ b/spec/models/build_spec.rb
@@ -309,6 +309,18 @@ describe Ci::Build, models: true do
end
end
+ describe '#has_tags?' do
+ context 'when build has tags' do
+ subject { create(:ci_build, tag_list: ['tag']) }
+ it { is_expected.to have_tags }
+ end
+
+ context 'when build does not have tags' do
+ subject { create(:ci_build, tag_list: []) }
+ it { is_expected.to_not have_tags }
+ end
+ end
+
describe '#any_runners_online?' do
subject { build.any_runners_online? }