diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb index 3861501479f2dd3d5f48682ecdb8b0ea56a92241..5a25489e9e81b76806ac9af0d1ec53f5ddfe6ea9 100644 --- a/app/models/application_setting.rb +++ b/app/models/application_setting.rb @@ -752,7 +752,8 @@ def self.ci_cd_settings_definition silent_admin_exports_enabled: [:boolean, { default: false }], allow_contribution_mapping_to_admins: [:boolean, { default: false }], allow_bypass_placeholder_confirmation: [:boolean, { default: false }], - relation_export_batch_size: [:integer, { default: 50 }] + relation_export_batch_size: [:integer, { default: 50 }], + allow_minio_for_offline_transfer: [:boolean, { default: false }] jsonb_accessor :sign_in_restrictions, disable_password_authentication_for_users_with_sso_identities: [:boolean, { default: false }], diff --git a/app/models/import/offline/configuration.rb b/app/models/import/offline/configuration.rb index 0bfd4c0441d178d7b48a3669934d74f2080b3826..85fb76ee42ddb866dd960a58e01860f56969fbcb 100644 --- a/app/models/import/offline/configuration.rb +++ b/app/models/import/offline/configuration.rb @@ -43,10 +43,8 @@ def endpoint end def supported_providers - # MinIO will eventually be enabled by an application setting disabled by default: - # https://gitlab.com/gitlab-org/gitlab/-/issues/579705 providers = self.class.providers - providers = providers.except(:minio) unless Rails.env.development? + providers = providers.except(:minio) unless Gitlab::CurrentSettings.allow_minio_for_offline_transfer? providers.keys.map(&:to_s) end end diff --git a/app/validators/json_schemas/application_setting_importers.json b/app/validators/json_schemas/application_setting_importers.json index 0969f91e77a0f4836794ee2fe033805d723e7cc1..ffa8c709941be838884f1258f651914a94c7cd58 100644 --- a/app/validators/json_schemas/application_setting_importers.json +++ b/app/validators/json_schemas/application_setting_importers.json @@ -14,6 +14,9 @@ }, "relation_export_batch_size": { "type": "integer" + }, + "allow_minio_for_offline_transfer": { + "type": "boolean" } }, "additionalProperties": false diff --git a/spec/models/application_setting_spec.rb b/spec/models/application_setting_spec.rb index b56b5582a84e08a41771b4fbba60bd3573933d71..cefbe1b4ba4a5d1027d89c48affde3e4abc4a714 100644 --- a/spec/models/application_setting_spec.rb +++ b/spec/models/application_setting_spec.rb @@ -30,6 +30,7 @@ allow_contribution_mapping_to_admins: false, allow_local_requests_from_system_hooks: true, allow_local_requests_from_web_hooks_and_services: false, + allow_minio_for_offline_transfer: false, allow_possible_spam: false, allow_project_creation_for_guest_and_below: true, allow_runner_registration_token: true, diff --git a/spec/models/import/offline/configuration_spec.rb b/spec/models/import/offline/configuration_spec.rb index 900e3908a4a83ef7bf08866f97c31706254e3143..28697ffa726ea687a832b9a0fa0ffc2d43d9d818 100644 --- a/spec/models/import/offline/configuration_spec.rb +++ b/spec/models/import/offline/configuration_spec.rb @@ -31,17 +31,17 @@ it { is_expected.not_to allow_value('special.characters/\?<>@&=_ ').for(:bucket) } describe '#provider' do - context 'when in development environment' do + context 'when MinIO is allowed for offline transfer' do before do - allow(Rails.env).to receive(:development?).and_return(true) + stub_application_setting(allow_minio_for_offline_transfer: true) end it { is_expected.to allow_values('minio', 'aws').for(:provider) } end - context 'when not in development environment' do + context 'when MinIO is not allowed for offline transfer' do before do - allow(Rails.env).to receive(:development?).and_return(false) + stub_application_setting(allow_minio_for_offline_transfer: false) end it { is_expected.to allow_value('aws').for(:provider) } @@ -116,7 +116,7 @@ end before do - allow(Rails.env).to receive(:development?).and_return(true) + stub_application_setting(allow_minio_for_offline_transfer: true) end context 'with valid credentials' do