diff options
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | app/services/register_build_service.rb | 12 | ||||
-rw-r--r-- | spec/requests/api/builds_spec.rb | 2 | ||||
-rw-r--r-- | spec/services/register_build_service_spec.rb | 31 |
4 files changed, 9 insertions, 37 deletions
@@ -1,5 +1,4 @@ v7.12.1 - - Runner without tag should pick builds without tag only - Explicit error in the GitLab when commit not found. - Fix: lint with relative subpath - Update webhook example diff --git a/app/services/register_build_service.rb b/app/services/register_build_service.rb index b15e762..e0f1659 100644 --- a/app/services/register_build_service.rb +++ b/app/services/register_build_service.rb @@ -15,10 +15,14 @@ class RegisterBuildService builds = builds.order('created_at ASC') - build = builds.find do |build| - (build.tag_list - current_runner.tag_list).empty? - end - + build = + if current_runner.tag_list.present? + builds.find do |build| + (build.tag_list - current_runner.tag_list).empty? + end + else + builds.first + end if build # In case when 2 runners try to assign the same build, second runner will be declined diff --git a/spec/requests/api/builds_spec.rb b/spec/requests/api/builds_spec.rb index 64d00bf..1fece31 100644 --- a/spec/requests/api/builds_spec.rb +++ b/spec/requests/api/builds_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe API::API do include ApiHelpers - let(:runner) { FactoryGirl.create(:runner, tag_list: ["mysql", "ruby"]) } + let(:runner) { FactoryGirl.create(:runner) } let(:project) { FactoryGirl.create(:project) } describe "Builds API for runners" do diff --git a/spec/services/register_build_service_spec.rb b/spec/services/register_build_service_spec.rb index b5af777..1407346 100644 --- a/spec/services/register_build_service_spec.rb +++ b/spec/services/register_build_service_spec.rb @@ -13,37 +13,6 @@ describe RegisterBuildService do end describe :execute do - context 'runner follow tag list' do - it "picks build with the same tag" do - pending_build.tag_list = ["linux"] - pending_build.save - specific_runner.tag_list = ["linux"] - service.execute(specific_runner).should == pending_build - end - - it "does not pick build with different tag" do - pending_build.tag_list = ["linux"] - pending_build.save - specific_runner.tag_list = ["win32"] - service.execute(specific_runner).should be_false - end - - it "picks build without tag" do - service.execute(specific_runner).should == pending_build - end - - it "does not pick build with tag" do - pending_build.tag_list = ["linux"] - pending_build.save - service.execute(specific_runner).should be_false - end - - it "pick build without tag" do - specific_runner.tag_list = ["win32"] - service.execute(specific_runner).should == pending_build - end - end - context 'allow shared runners' do before do project.shared_runners_enabled = true |