diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-10-12 21:11:36 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-10-12 21:11:36 +0300 |
commit | 50b113507b3b03bdce4753ba3ff3ffb53d21f756 (patch) | |
tree | 2c996d93db948331ed78cbe9654a09d245812da1 /app/services | |
parent | 00d1c402017269aa16bb71deca623a901baa113d (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services')
14 files changed, 87 insertions, 74 deletions
diff --git a/app/services/auth/container_registry_authentication_service.rb b/app/services/auth/container_registry_authentication_service.rb index 9b010272995..c3c29dd7ed1 100644 --- a/app/services/auth/container_registry_authentication_service.rb +++ b/app/services/auth/container_registry_authentication_service.rb @@ -39,32 +39,45 @@ module Auth end def self.full_access_token(*names) - access_token(%w[*], names) + names_and_actions = names.index_with { %w[*] } + access_token(names_and_actions) end def self.import_access_token - access_token(%w[*], ['import'], 'registry') + access_token({ 'import' => %w[*] }, 'registry') end def self.pull_access_token(*names) - access_token(['pull'], names) + names_and_actions = names.index_with { %w[pull] } + access_token(names_and_actions) end def self.pull_nested_repositories_access_token(name) - name = name.chomp('/') if name.end_with?('/') - paths = [name, "#{name}/*"] - access_token(['pull'], paths) + name = name.chomp('/') + + access_token({ + name => %w[pull], + "#{name}/*" => %w[pull] + }) + end + + def self.push_pull_nested_repositories_access_token(name) + name = name.chomp('/') + + access_token({ + name => %w[pull push], + "#{name}/*" => %w[pull] + }) end - def self.access_token(actions, names, type = 'repository') - names = names.flatten + def self.access_token(names_and_actions, type = 'repository') registry = Gitlab.config.registry token = JSONWebToken::RSAToken.new(registry.key) token.issuer = registry.issuer token.audience = AUDIENCE token.expire_time = token_expire_at - token[:access] = names.map do |name| + token[:access] = names_and_actions.map do |name, actions| { type: type, name: name, diff --git a/app/services/merge_requests/mergeability/check_base_service.rb b/app/services/merge_requests/mergeability/check_base_service.rb index e614a7c27fe..e1c4d751296 100644 --- a/app/services/merge_requests/mergeability/check_base_service.rb +++ b/app/services/merge_requests/mergeability/check_base_service.rb @@ -9,6 +9,10 @@ module MergeRequests @params = params end + def self.identifier + failure_reason + end + def skip? raise NotImplementedError end @@ -24,12 +28,22 @@ module MergeRequests private + def failure_reason + self.class.failure_reason + end + def success(**args) - Gitlab::MergeRequests::Mergeability::CheckResult.success(payload: args) + Gitlab::MergeRequests::Mergeability::CheckResult + .success(payload: default_payload(args)) end def failure(**args) - Gitlab::MergeRequests::Mergeability::CheckResult.failed(payload: args) + Gitlab::MergeRequests::Mergeability::CheckResult + .failed(payload: default_payload(args)) + end + + def default_payload(args) + args.merge(identifier: self.class.identifier) end end end diff --git a/app/services/merge_requests/mergeability/check_broken_status_service.rb b/app/services/merge_requests/mergeability/check_broken_status_service.rb index 6fe4eb4a57f..25293c53bb5 100644 --- a/app/services/merge_requests/mergeability/check_broken_status_service.rb +++ b/app/services/merge_requests/mergeability/check_broken_status_service.rb @@ -2,6 +2,10 @@ module MergeRequests module Mergeability class CheckBrokenStatusService < CheckBaseService + def self.failure_reason + :broken_status + end + def execute if merge_request.broken? failure(reason: failure_reason) @@ -17,12 +21,6 @@ module MergeRequests def cacheable? false end - - private - - def failure_reason - :broken_status - end end end end diff --git a/app/services/merge_requests/mergeability/check_ci_status_service.rb b/app/services/merge_requests/mergeability/check_ci_status_service.rb index 9e09b513c57..f7fa3259d97 100644 --- a/app/services/merge_requests/mergeability/check_ci_status_service.rb +++ b/app/services/merge_requests/mergeability/check_ci_status_service.rb @@ -2,6 +2,10 @@ module MergeRequests module Mergeability class CheckCiStatusService < CheckBaseService + def self.failure_reason + :ci_must_pass + end + def execute if merge_request.mergeable_ci_state? success @@ -17,12 +21,6 @@ module MergeRequests def cacheable? false end - - private - - def failure_reason - :ci_must_pass - end end end end diff --git a/app/services/merge_requests/mergeability/check_conflict_status_service.rb b/app/services/merge_requests/mergeability/check_conflict_status_service.rb index 40138f72e32..2bc253322c9 100644 --- a/app/services/merge_requests/mergeability/check_conflict_status_service.rb +++ b/app/services/merge_requests/mergeability/check_conflict_status_service.rb @@ -3,6 +3,10 @@ module MergeRequests module Mergeability class CheckConflictStatusService < CheckBaseService + def self.failure_reason + :conflict + end + def execute if merge_request.can_be_merged? success @@ -18,12 +22,6 @@ module MergeRequests def cacheable? false end - - private - - def failure_reason - :conflict - end end end end diff --git a/app/services/merge_requests/mergeability/check_discussions_status_service.rb b/app/services/merge_requests/mergeability/check_discussions_status_service.rb index 3421d96e8ae..34db5f8a944 100644 --- a/app/services/merge_requests/mergeability/check_discussions_status_service.rb +++ b/app/services/merge_requests/mergeability/check_discussions_status_service.rb @@ -2,6 +2,10 @@ module MergeRequests module Mergeability class CheckDiscussionsStatusService < CheckBaseService + def self.failure_reason + :discussions_not_resolved + end + def execute if merge_request.mergeable_discussions_state? success @@ -17,12 +21,6 @@ module MergeRequests def cacheable? false end - - private - - def failure_reason - :discussions_not_resolved - end end end end diff --git a/app/services/merge_requests/mergeability/check_draft_status_service.rb b/app/services/merge_requests/mergeability/check_draft_status_service.rb index dc42e4aa676..85b67fdc629 100644 --- a/app/services/merge_requests/mergeability/check_draft_status_service.rb +++ b/app/services/merge_requests/mergeability/check_draft_status_service.rb @@ -3,6 +3,10 @@ module MergeRequests module Mergeability class CheckDraftStatusService < CheckBaseService + def self.failure_reason + :draft_status + end + def execute if merge_request.draft? failure(reason: failure_reason) @@ -18,12 +22,6 @@ module MergeRequests def cacheable? false end - - private - - def failure_reason - :draft_status - end end end end diff --git a/app/services/merge_requests/mergeability/check_open_status_service.rb b/app/services/merge_requests/mergeability/check_open_status_service.rb index 29f3d0d3ccb..f5b70f18394 100644 --- a/app/services/merge_requests/mergeability/check_open_status_service.rb +++ b/app/services/merge_requests/mergeability/check_open_status_service.rb @@ -3,6 +3,10 @@ module MergeRequests module Mergeability class CheckOpenStatusService < CheckBaseService + def self.failure_reason + :not_open + end + def execute if merge_request.open? success @@ -18,12 +22,6 @@ module MergeRequests def cacheable? false end - - private - - def failure_reason - :not_open - end end end end diff --git a/app/services/merge_requests/mergeability/check_rebase_status_service.rb b/app/services/merge_requests/mergeability/check_rebase_status_service.rb index 1023716492b..2163fec8bd6 100644 --- a/app/services/merge_requests/mergeability/check_rebase_status_service.rb +++ b/app/services/merge_requests/mergeability/check_rebase_status_service.rb @@ -3,6 +3,10 @@ module MergeRequests module Mergeability class CheckRebaseStatusService < CheckBaseService + def self.failure_reason + :need_rebase + end + def execute if merge_request.should_be_rebased? failure(reason: failure_reason) @@ -18,12 +22,6 @@ module MergeRequests def cacheable? false end - - private - - def failure_reason - :need_rebase - end end end end diff --git a/app/services/merge_requests/mergeability/detailed_merge_status_service.rb b/app/services/merge_requests/mergeability/detailed_merge_status_service.rb index 736b17dc84b..86c8122604c 100644 --- a/app/services/merge_requests/mergeability/detailed_merge_status_service.rb +++ b/app/services/merge_requests/mergeability/detailed_merge_status_service.rb @@ -24,7 +24,7 @@ module MergeRequests ci_check_failure_reason end else - check_results.failure_reason + check_results.payload[:failure_reason] end end @@ -48,7 +48,7 @@ module MergeRequests strong_memoize(:check_results) do merge_request .execute_merge_checks( - merge_request.mergeable_state_checks, + MergeRequest.mergeable_state_checks, params: { skip_ci_check: true } ) end diff --git a/app/services/merge_requests/mergeability/run_checks_service.rb b/app/services/merge_requests/mergeability/run_checks_service.rb index cac55574cf4..5150c03d0a3 100644 --- a/app/services/merge_requests/mergeability/run_checks_service.rb +++ b/app/services/merge_requests/mergeability/run_checks_service.rb @@ -9,7 +9,7 @@ module MergeRequests @params = params end - def execute(checks) + def execute(checks, execute_all: false) @results = checks.each_with_object([]) do |check_class, result_hash| check = check_class.new(merge_request: merge_request, params: params) @@ -21,24 +21,20 @@ module MergeRequests result_hash << check_result - break result_hash if check_result.failed? + break result_hash if check_result.failed? && !execute_all end logger.commit - self - end - - def success? - raise 'Execute needs to be called before' if results.nil? - - results.all?(&:success?) - end - - def failure_reason - raise 'Execute needs to be called before' if results.nil? + return ServiceResponse.success(payload: { results: results }) if all_results_success? - results.find(&:failed?)&.payload&.fetch(:reason)&.to_sym + ServiceResponse.error( + message: 'Checks failed.', + payload: { + results: results, + failure_reason: failure_reason + } + ) end private @@ -67,6 +63,14 @@ module MergeRequests MergeRequests::Mergeability::Logger.new(merge_request: merge_request) end end + + def all_results_success? + results.all?(&:success?) + end + + def failure_reason + results.find(&:failed?)&.payload&.fetch(:reason)&.to_sym + end end end end diff --git a/app/services/packages/nuget/process_package_file_service.rb b/app/services/packages/nuget/process_package_file_service.rb index d1002f60e71..fa7a84ee3d6 100644 --- a/app/services/packages/nuget/process_package_file_service.rb +++ b/app/services/packages/nuget/process_package_file_service.rb @@ -47,8 +47,6 @@ module Packages end def create_symbol_files(zip_file) - return if Feature.disabled?(:index_nuget_symbol_files, package_file.project) - ::Packages::Nuget::Symbols::CreateSymbolFilesService .new(package_file.package, zip_file) .execute diff --git a/app/services/packages/nuget/update_package_from_metadata_service.rb b/app/services/packages/nuget/update_package_from_metadata_service.rb index a02795c2942..4cec4ed2fae 100644 --- a/app/services/packages/nuget/update_package_from_metadata_service.rb +++ b/app/services/packages/nuget/update_package_from_metadata_service.rb @@ -80,8 +80,6 @@ module Packages end def update_symbol_files(package, package_to_destroy) - return if Feature.disabled?(:index_nuget_symbol_files, package.project) - package_to_destroy.nuget_symbols.update_all(package_id: package.id) end diff --git a/app/services/update_container_registry_info_service.rb b/app/services/update_container_registry_info_service.rb index de90e7c71ad..b720f9b14a5 100644 --- a/app/services/update_container_registry_info_service.rb +++ b/app/services/update_container_registry_info_service.rb @@ -11,7 +11,7 @@ class UpdateContainerRegistryInfoService # associated user when running this (e.g. from a rake task or a cron job), # so we need to generate a valid JWT token with no access permissions to # authenticate as a trusted client. - token = Auth::ContainerRegistryAuthenticationService.access_token([], []) + token = Auth::ContainerRegistryAuthenticationService.access_token({}) client = ContainerRegistry::Client.new(registry_config.api_url, token: token) info = client.registry_info |