Commit 6b354370 authored by Kamil Trzciński's avatar Kamil Trzciński

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
parents 923ad9a9 fefd61c1
...@@ -174,7 +174,7 @@ module Ci ...@@ -174,7 +174,7 @@ module Ci
end end
def assignable_for?(project) def assignable_for?(project)
!locked? || projects.exists?(id: project.id) is_shared? || projects.exists?(id: project.id)
end end
def accepting_tags?(build) def accepting_tags?(build)
......
---
title: Make locked setting of Runner to not affect jobs scheduling
merge_request: 14483
author:
type: fixed
...@@ -183,77 +183,44 @@ describe Ci::Runner do ...@@ -183,77 +183,44 @@ describe Ci::Runner do
end end
end end
context 'when runner is locked' do context 'when runner is shared' do
before do
runner.locked = true
end
shared_examples 'locked build picker' do
context 'when runner cannot pick untagged jobs' do
before do
runner.run_untagged = false
end
it 'cannot handle builds without tags' do
expect(runner.can_pick?(build)).to be_falsey
end
end
context 'when having runner tags' do
before do before do
runner.tag_list = %w(bb cc) runner.is_shared = true
end build.project.runners = []
it 'cannot handle it for builds without matching tags' do
build.tag_list = ['aa']
expect(runner.can_pick?(build)).to be_falsey
end
end
end end
context 'when serving the same project' do it 'can handle builds' do
it 'can handle it' do
expect(runner.can_pick?(build)).to be_truthy expect(runner.can_pick?(build)).to be_truthy
end end
it_behaves_like 'locked build picker' context 'when runner is locked' do
context 'when having runner tags' do
before do before do
runner.tag_list = %w(bb cc) runner.locked = true
build.tag_list = ['bb']
end end
it 'can handle it for matching tags' do it 'can handle builds' do
expect(runner.can_pick?(build)).to be_truthy expect(runner.can_pick?(build)).to be_truthy
end end
end end
end end
context 'serving a different project' do context 'when runner is not shared' do
before do context 'when runner is assigned to a project' do
runner.runner_projects.destroy_all it 'can handle builds' do
expect(runner.can_pick?(build)).to be_truthy
end end
it 'cannot handle it' do
expect(runner.can_pick?(build)).to be_falsey
end end
it_behaves_like 'locked build picker' context 'when runner is not assigned to a project' do
context 'when having runner tags' do
before do before do
runner.tag_list = %w(bb cc) build.project.runners = []
build.tag_list = ['bb']
end end
it 'cannot handle it for matching tags' do it 'cannot handle builds' do
expect(runner.can_pick?(build)).to be_falsey expect(runner.can_pick?(build)).to be_falsey
end end
end end
end end
end
context 'when access_level of runner is not_protected' do context 'when access_level of runner is not_protected' do
before do before do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment