diff options
author | Kamil TrzciĆski <ayufan@ayufan.eu> | 2017-09-26 08:56:10 +0000 |
---|---|---|
committer | Jarka Kadlecova <jarka@gitlab.com> | 2017-09-26 11:43:54 +0200 |
commit | 7d537e59c42d4568bc8822ebb4d4108384d445df (patch) | |
tree | b94e01fed7749f38bf319ef1a255faa70ae5ea77 | |
parent | 3c32ffd553a20d4dffff8271d20551a10f8358f1 (diff) | |
download | gitlab-ce-7d537e59c42d4568bc8822ebb4d4108384d445df.tar.gz |
Merge branch 'fix-locked-shared-runners-problem' into 'master'
Fix locked shared runners problem
Closes gitlab-runner#2782
See merge request gitlab-org/gitlab-ce!14483
-rw-r--r-- | app/models/ci/runner.rb | 2 | ||||
-rw-r--r-- | changelogs/unreleased/fix-locked-shared-runners-problem.yml | 5 | ||||
-rw-r--r-- | spec/models/ci/runner_spec.rb | 69 |
3 files changed, 24 insertions, 52 deletions
diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb index b1798084787..d7b9032eb26 100644 --- a/app/models/ci/runner.rb +++ b/app/models/ci/runner.rb @@ -174,7 +174,7 @@ module Ci end def assignable_for?(project) - !locked? || projects.exists?(id: project.id) + is_shared? || projects.exists?(id: project.id) end def accepting_tags?(build) diff --git a/changelogs/unreleased/fix-locked-shared-runners-problem.yml b/changelogs/unreleased/fix-locked-shared-runners-problem.yml new file mode 100644 index 00000000000..3e3cccf79eb --- /dev/null +++ b/changelogs/unreleased/fix-locked-shared-runners-problem.yml @@ -0,0 +1,5 @@ +--- +title: Make locked setting of Runner to not affect jobs scheduling +merge_request: 14483 +author: +type: fixed diff --git a/spec/models/ci/runner_spec.rb b/spec/models/ci/runner_spec.rb index 2e686e515c5..584dfe9a5c1 100644 --- a/spec/models/ci/runner_spec.rb +++ b/spec/models/ci/runner_spec.rb @@ -183,75 +183,42 @@ describe Ci::Runner do end end - context 'when runner is locked' do + context 'when runner is shared' do before do - runner.locked = true + runner.is_shared = true + build.project.runners = [] end - shared_examples 'locked build picker' do - context 'when runner cannot pick untagged jobs' do - before do - runner.run_untagged = false - end + it 'can handle builds' do + expect(runner.can_pick?(build)).to be_truthy + end - it 'cannot handle builds without tags' do - expect(runner.can_pick?(build)).to be_falsey - end + context 'when runner is locked' do + before do + runner.locked = true end - context 'when having runner tags' do - before do - runner.tag_list = %w(bb cc) - end - - it 'cannot handle it for builds without matching tags' do - build.tag_list = ['aa'] - - expect(runner.can_pick?(build)).to be_falsey - end + it 'can handle builds' do + expect(runner.can_pick?(build)).to be_truthy end end + end - context 'when serving the same project' do - it 'can handle it' do + context 'when runner is not shared' do + context 'when runner is assigned to a project' do + it 'can handle builds' do expect(runner.can_pick?(build)).to be_truthy end - - it_behaves_like 'locked build picker' - - context 'when having runner tags' do - before do - runner.tag_list = %w(bb cc) - build.tag_list = ['bb'] - end - - it 'can handle it for matching tags' do - expect(runner.can_pick?(build)).to be_truthy - end - end end - context 'serving a different project' do + context 'when runner is not assigned to a project' do before do - runner.runner_projects.destroy_all + build.project.runners = [] end - it 'cannot handle it' do + it 'cannot handle builds' do expect(runner.can_pick?(build)).to be_falsey end - - it_behaves_like 'locked build picker' - - context 'when having runner tags' do - before do - runner.tag_list = %w(bb cc) - build.tag_list = ['bb'] - end - - it 'cannot handle it for matching tags' do - expect(runner.can_pick?(build)).to be_falsey - end - end end end |