From 9297025d0b7ddf095eb618dfaaab2ff8f2018d8b Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 19 Dec 2023 11:01:45 +0000 Subject: Add latest changes from gitlab-org/gitlab@16-7-stable-ee --- .../ci/catalog/resources/destroy_service.rb | 27 ++++++++++++++++++ app/services/ci/components/fetch_service.rb | 2 +- app/services/ci/create_commit_status_service.rb | 3 +- .../ci/generate_coverage_reports_service.rb | 32 ++++++++++++++-------- .../bulk_delete_by_project_service.rb | 2 +- app/services/ci/job_artifacts/create_service.rb | 4 +-- app/services/ci/process_sync_events_service.rb | 8 +++--- app/services/ci/update_build_state_service.rb | 1 + 8 files changed, 58 insertions(+), 21 deletions(-) create mode 100644 app/services/ci/catalog/resources/destroy_service.rb (limited to 'app/services/ci') diff --git a/app/services/ci/catalog/resources/destroy_service.rb b/app/services/ci/catalog/resources/destroy_service.rb new file mode 100644 index 00000000000..feea0302ca9 --- /dev/null +++ b/app/services/ci/catalog/resources/destroy_service.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +module Ci + module Catalog + module Resources + class DestroyService + include Gitlab::Allowable + + attr_reader :project, :current_user + + def initialize(project, user) + @current_user = user + @project = project + end + + def execute(catalog_resource) + raise Gitlab::Access::AccessDeniedError unless can?(current_user, :add_catalog_resource, + project) + + catalog_resource.destroy! + + ServiceResponse.success(message: 'Catalog Resource destroyed') + end + end + end + end +end diff --git a/app/services/ci/components/fetch_service.rb b/app/services/ci/components/fetch_service.rb index 4f09d47b530..f83c6e30cbb 100644 --- a/app/services/ci/components/fetch_service.rb +++ b/app/services/ci/components/fetch_service.rb @@ -24,7 +24,7 @@ module Ci component_path = component_path_class.new(address: address) result = component_path.fetch_content!(current_user: current_user) - if result + if result&.content ServiceResponse.success(payload: { content: result.content, path: result.path, diff --git a/app/services/ci/create_commit_status_service.rb b/app/services/ci/create_commit_status_service.rb index e5b446a07e2..de3e7b3f7ff 100644 --- a/app/services/ci/create_commit_status_service.rb +++ b/app/services/ci/create_commit_status_service.rb @@ -93,7 +93,8 @@ module Ci protected: project.protected_for?(ref), ci_stage: stage, stage_idx: stage.position, - stage: 'external' + stage: 'external', + partition_id: pipeline.partition_id ).tap do |new_commit_status| new_commit_status.assign_attributes(optional_commit_status_params) end diff --git a/app/services/ci/generate_coverage_reports_service.rb b/app/services/ci/generate_coverage_reports_service.rb index 8beecb79fd9..e059f8acda6 100644 --- a/app/services/ci/generate_coverage_reports_service.rb +++ b/app/services/ci/generate_coverage_reports_service.rb @@ -9,19 +9,26 @@ module Ci class GenerateCoverageReportsService < CompareReportsBaseService def execute(base_pipeline, head_pipeline) merge_request = MergeRequest.find_by_id(params[:id]) + code_coverage_artifact = head_pipeline.pipeline_artifacts.find_by_file_type(:code_coverage) + return error_response(base_pipeline, head_pipeline) unless code_coverage_artifact && merge_request + { status: :parsed, key: key(base_pipeline, head_pipeline), - data: head_pipeline.pipeline_artifacts.find_by_file_type(:code_coverage).present.for_files(merge_request.new_paths) + data: code_coverage_artifact.present.for_files(merge_request.new_paths) } rescue StandardError => e - Gitlab::ErrorTracking.track_exception( - e, - project_id: project.id, - base_pipeline_id: base_pipeline&.id, - head_pipeline_id: head_pipeline&.id - ) + track_exception(e, base_pipeline, head_pipeline) + error_response(base_pipeline, head_pipeline) + end + + def latest?(base_pipeline, head_pipeline, data) + data&.fetch(:key, nil) == key(base_pipeline, head_pipeline) + end + private + + def error_response(base_pipeline, head_pipeline) { status: :error, key: key(base_pipeline, head_pipeline), @@ -29,12 +36,15 @@ module Ci } end - def latest?(base_pipeline, head_pipeline, data) - data&.fetch(:key, nil) == key(base_pipeline, head_pipeline) + def track_exception(error, base_pipeline, head_pipeline) + Gitlab::ErrorTracking.track_exception( + error, + project_id: project.id, + base_pipeline_id: base_pipeline&.id, + head_pipeline_id: head_pipeline&.id + ) end - private - def key(base_pipeline, head_pipeline) [ base_pipeline&.id, last_update_timestamp(base_pipeline), diff --git a/app/services/ci/job_artifacts/bulk_delete_by_project_service.rb b/app/services/ci/job_artifacts/bulk_delete_by_project_service.rb index 738fa19e29b..57f65f6dea3 100644 --- a/app/services/ci/job_artifacts/bulk_delete_by_project_service.rb +++ b/app/services/ci/job_artifacts/bulk_delete_by_project_service.rb @@ -5,7 +5,7 @@ module Ci class BulkDeleteByProjectService include BaseServiceUtility - JOB_ARTIFACTS_COUNT_LIMIT = 50 + JOB_ARTIFACTS_COUNT_LIMIT = 100 def initialize(job_artifact_ids:, project:, current_user:) @job_artifact_ids = job_artifact_ids diff --git a/app/services/ci/job_artifacts/create_service.rb b/app/services/ci/job_artifacts/create_service.rb index c09b0cf81f1..0791fff8545 100644 --- a/app/services/ci/job_artifacts/create_service.rb +++ b/app/services/ci/job_artifacts/create_service.rb @@ -128,11 +128,9 @@ module Ci def accessibility(params) accessibility = params[:accessibility] - return :public if Feature.disabled?(:non_public_artifacts, type: :development) - return accessibility if accessibility.present? - job.artifacts_public? ? :public : :private + job.artifact_is_public_in_config? ? :public : :private end def parse_artifact(artifact) diff --git a/app/services/ci/process_sync_events_service.rb b/app/services/ci/process_sync_events_service.rb index d90ee02b1c6..d3c699597b6 100644 --- a/app/services/ci/process_sync_events_service.rb +++ b/app/services/ci/process_sync_events_service.rb @@ -13,7 +13,7 @@ module Ci end def execute - # preventing parallel processing over the same event table + # To prevent parallel processing over the same event table try_obtain_lease { process_events } enqueue_worker_if_there_still_event @@ -26,7 +26,7 @@ module Ci def process_events add_result(estimated_total_events: @sync_event_class.upper_bound_count) - events = @sync_event_class.preload_synced_relation.first(BATCH_SIZE) + events = @sync_event_class.unprocessed_events.preload_synced_relation.first(BATCH_SIZE) add_result(consumable_events: events.size) @@ -42,12 +42,12 @@ module Ci end ensure add_result(processed_events: processed_events.size) - @sync_event_class.id_in(processed_events).delete_all + @sync_event_class.mark_records_processed(processed_events) end end def enqueue_worker_if_there_still_event - @sync_event_class.enqueue_worker if @sync_event_class.exists? + @sync_event_class.enqueue_worker if @sync_event_class.unprocessed_events.exists? end def lease_key diff --git a/app/services/ci/update_build_state_service.rb b/app/services/ci/update_build_state_service.rb index 835d5f9a16c..bd76f6dbda8 100644 --- a/app/services/ci/update_build_state_service.rb +++ b/app/services/ci/update_build_state_service.rb @@ -168,6 +168,7 @@ module Ci def ensure_pending_state build_state = Ci::BuildPendingState.safe_find_or_create_by( build_id: build.id, + partition_id: build.partition_id, state: params.fetch(:state), trace_checksum: trace_checksum, trace_bytesize: trace_bytesize, -- cgit v1.2.3