From 81c0c57acd0f065bc5b80902ee664256d4c3241f Mon Sep 17 00:00:00 2001 From: Alexis Reigel Date: Mon, 25 Sep 2017 16:46:03 +0200 Subject: [PATCH] exclude group runners on projects that disabled it --- app/models/ci/runner.rb | 9 ++++++--- spec/models/ci/runner_spec.rb | 8 ++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb index 6ffa9372c6e..2f4342b79aa 100644 --- a/app/models/ci/runner.rb +++ b/app/models/ci/runner.rb @@ -35,13 +35,16 @@ module Ci %{ INNER JOIN ci_runner_groups ON ci_runner_groups.runner_id = ci_runners.id INNER JOIN namespaces ON namespaces.id = ci_runner_groups.group_id - INNER JOIN projects group_projects ON group_projects.namespace_id = namespaces.id + INNER JOIN projects ON projects.namespace_id = namespaces.id } ).where( %{ - group_projects.id = :project_id + projects.id = :project_id + AND + projects.group_runners_enabled = :true }, - project_id: project_id + project_id: project_id, + true: true ) shared_runners = where(is_shared: true) diff --git a/spec/models/ci/runner_spec.rb b/spec/models/ci/runner_spec.rb index b9aafa63493..933bd6e5f23 100644 --- a/spec/models/ci/runner_spec.rb +++ b/spec/models/ci/runner_spec.rb @@ -83,6 +83,14 @@ describe Ci::Runner do expect(described_class.owned_or_shared(specific_project.id)).to eq [specific_runner] end + it 'does not return the group runner if the project has group runners disabled' do + specific_group = create :group + specific_project = create :project, group: specific_group, group_runners_enabled: false + create :ci_runner, :specific, groups: [specific_group] + + expect(described_class.owned_or_shared(specific_project.id)).to be_empty + end + it 'returns the shared group runner' do group = create :group runner = create :ci_runner, :shared, groups: [group]