Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-10-25 09:09:46 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-10-25 09:09:46 +0300
commit0712a75cc03cb881dc40ae53a50d059822354ad8 (patch)
treecc1b93f252553755b8ee9762540458d652f0f411
parent4d3b1c506f6dc753c67bc5ad00d838dd79616b95 (diff)
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--app/models/ci/runner.rb12
-rw-r--r--app/models/clusters/applications/runner.rb2
-rw-r--r--lib/sidebars/groups/menus/packages_registries_menu.rb2
-rw-r--r--spec/factories/ci/runner_namespaces.rb9
-rw-r--r--spec/factories/ci/runners.rb9
-rw-r--r--spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb23
-rw-r--r--spec/models/ci/runner_spec.rb2
-rw-r--r--spec/models/clusters/applications/runner_spec.rb2
8 files changed, 41 insertions, 20 deletions
diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb
index e86c5ad9d38..a1219cb2bd5 100644
--- a/app/models/ci/runner.rb
+++ b/app/models/ci/runner.rb
@@ -439,10 +439,8 @@ module Ci
end
def no_groups
- ::Gitlab::Database.allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/338659') do
- if groups.any?
- errors.add(:runner, 'cannot have groups assigned')
- end
+ if runner_namespaces.any?
+ errors.add(:runner, 'cannot have groups assigned')
end
end
@@ -453,10 +451,8 @@ module Ci
end
def exactly_one_group
- ::Gitlab::Database.allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/338659') do
- unless groups.one?
- errors.add(:runner, 'needs to be assigned to exactly one group')
- end
+ unless runner_namespaces.one?
+ errors.add(:runner, 'needs to be assigned to exactly one group')
end
end
diff --git a/app/models/clusters/applications/runner.rb b/app/models/clusters/applications/runner.rb
index 7cef92ce81a..25ae0b30486 100644
--- a/app/models/clusters/applications/runner.rb
+++ b/app/models/clusters/applications/runner.rb
@@ -70,7 +70,7 @@ module Clusters
}
if cluster.group_type?
- attributes[:groups] = [group]
+ attributes[:runner_namespaces] = [::Ci::RunnerNamespace.new(namespace: group)]
elsif cluster.project_type?
attributes[:runner_projects] = [::Ci::RunnerProject.new(project: project)]
end
diff --git a/lib/sidebars/groups/menus/packages_registries_menu.rb b/lib/sidebars/groups/menus/packages_registries_menu.rb
index e81e9355e7e..46fcec9f7b8 100644
--- a/lib/sidebars/groups/menus/packages_registries_menu.rb
+++ b/lib/sidebars/groups/menus/packages_registries_menu.rb
@@ -52,7 +52,7 @@ module Sidebars
end
def dependency_proxy_menu_item
- unless context.group.dependency_proxy_feature_available?
+ unless can?(context.current_user, :read_dependency_proxy, context.group)
return ::Sidebars::NilMenuItem.new(item_id: :dependency_proxy)
end
diff --git a/spec/factories/ci/runner_namespaces.rb b/spec/factories/ci/runner_namespaces.rb
index a5060d196ca..e3cebed789b 100644
--- a/spec/factories/ci/runner_namespaces.rb
+++ b/spec/factories/ci/runner_namespaces.rb
@@ -2,7 +2,14 @@
FactoryBot.define do
factory :ci_runner_namespace, class: 'Ci::RunnerNamespace' do
- runner factory: [:ci_runner, :group]
group
+
+ after(:build) do |runner_namespace, evaluator|
+ unless runner_namespace.runner.present?
+ runner_namespace.runner = build(
+ :ci_runner, :group, runner_namespaces: [runner_namespace]
+ )
+ end
+ end
end
end
diff --git a/spec/factories/ci/runners.rb b/spec/factories/ci/runners.rb
index d0853df4e4b..6665b7b76a0 100644
--- a/spec/factories/ci/runners.rb
+++ b/spec/factories/ci/runners.rb
@@ -11,6 +11,7 @@ FactoryBot.define do
runner_type { :instance_type }
transient do
+ groups { [] }
projects { [] }
end
@@ -18,6 +19,10 @@ FactoryBot.define do
evaluator.projects.each do |proj|
runner.runner_projects << build(:ci_runner_project, project: proj)
end
+
+ evaluator.groups.each do |group|
+ runner.runner_namespaces << build(:ci_runner_namespace, namespace: group)
+ end
end
trait :online do
@@ -32,7 +37,9 @@ FactoryBot.define do
runner_type { :group_type }
after(:build) do |runner, evaluator|
- runner.groups << build(:group) if runner.groups.empty?
+ if runner.runner_namespaces.empty?
+ runner.runner_namespaces << build(:ci_runner_namespace)
+ end
end
end
diff --git a/spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb b/spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb
index 5ebd67462f8..e954d7a44ba 100644
--- a/spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb
+++ b/spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb
@@ -137,16 +137,27 @@ RSpec.describe Sidebars::Groups::Menus::PackagesRegistriesMenu do
stub_config(dependency_proxy: { enabled: dependency_enabled })
end
- context 'when config dependency_proxy is enabled' do
- let(:dependency_enabled) { true }
+ context 'when user can read dependency proxy' do
+ context 'when config dependency_proxy is enabled' do
+ let(:dependency_enabled) { true }
- it 'the menu item is added to list of menu items' do
- is_expected.not_to be_nil
+ it 'the menu item is added to list of menu items' do
+ is_expected.not_to be_nil
+ end
+ end
+
+ context 'when config dependency_proxy is not enabled' do
+ let(:dependency_enabled) { false }
+
+ it 'the menu item is not added to list of menu items' do
+ is_expected.to be_nil
+ end
end
end
- context 'when config dependency_proxy is not enabled' do
- let(:dependency_enabled) { false }
+ context 'when user cannot read dependency proxy' do
+ let(:user) { nil }
+ let(:dependency_enabled) { true }
it 'the menu item is not added to list of menu items' do
is_expected.to be_nil
diff --git a/spec/models/ci/runner_spec.rb b/spec/models/ci/runner_spec.rb
index 826332268c5..c44f57ee137 100644
--- a/spec/models/ci/runner_spec.rb
+++ b/spec/models/ci/runner_spec.rb
@@ -44,7 +44,7 @@ RSpec.describe Ci::Runner do
let(:runner) { create(:ci_runner, :group, groups: [group]) }
it 'disallows assigning group if already assigned to a group' do
- runner.groups << build(:group)
+ runner.runner_namespaces << build(:ci_runner_namespace)
expect(runner).not_to be_valid
expect(runner.errors.full_messages).to include('Runner needs to be assigned to exactly one group')
diff --git a/spec/models/clusters/applications/runner_spec.rb b/spec/models/clusters/applications/runner_spec.rb
index 788430d53d3..d0257f6c2b6 100644
--- a/spec/models/clusters/applications/runner_spec.rb
+++ b/spec/models/clusters/applications/runner_spec.rb
@@ -112,7 +112,7 @@ RSpec.describe Clusters::Applications::Runner do
subject
expect(runner).to be_group_type
- expect(runner.groups).to eq [group]
+ expect(runner.runner_namespaces.pluck(:namespace_id)).to match_array [group.id]
end
end