42 lines
1.2 KiB
Ruby
42 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Ci
|
|
module JobArtifacts
|
|
class DeleteService
|
|
include BaseServiceUtility
|
|
|
|
def initialize(build)
|
|
@build = build
|
|
end
|
|
|
|
def execute
|
|
if build.project.refreshing_build_artifacts_size?
|
|
Gitlab::ProjectStatsRefreshConflictsLogger.warn_artifact_deletion_during_stats_refresh(
|
|
method: 'Ci::JobArtifacts::DeleteService#execute',
|
|
project_id: build.project_id
|
|
)
|
|
return ServiceResponse.error(
|
|
message: 'Action temporarily disabled. The project this job belongs to is undergoing stats refresh.',
|
|
reason: :project_stats_refresh
|
|
)
|
|
end
|
|
|
|
result = Ci::JobArtifacts::DestroyBatchService.new(build.job_artifacts.erasable).execute
|
|
|
|
if result.fetch(:status) == :success
|
|
ServiceResponse.success(payload:
|
|
{
|
|
destroyed_artifacts_count: result.fetch(:destroyed_artifacts_count),
|
|
statistics_updates: result.fetch(:statistics_updates)
|
|
})
|
|
else
|
|
ServiceResponse.error(message: result.fetch(:message))
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :build
|
|
end
|
|
end
|
|
end
|