diff options
Diffstat (limited to 'app/services/ci/pipeline_artifacts')
-rw-r--r-- | app/services/ci/pipeline_artifacts/coverage_report_service.rb | 2 | ||||
-rw-r--r-- | app/services/ci/pipeline_artifacts/create_code_quality_mr_diff_report_service.rb | 38 |
2 files changed, 39 insertions, 1 deletions
diff --git a/app/services/ci/pipeline_artifacts/coverage_report_service.rb b/app/services/ci/pipeline_artifacts/coverage_report_service.rb index 9f5c445c91a..8209639fa22 100644 --- a/app/services/ci/pipeline_artifacts/coverage_report_service.rb +++ b/app/services/ci/pipeline_artifacts/coverage_report_service.rb @@ -11,7 +11,7 @@ module Ci pipeline.pipeline_artifacts.create!( project_id: pipeline.project_id, file_type: :code_coverage, - file_format: :raw, + file_format: Ci::PipelineArtifact::REPORT_TYPES.fetch(:code_coverage), size: file["tempfile"].size, file: file, expire_at: Ci::PipelineArtifact::EXPIRATION_DATE.from_now diff --git a/app/services/ci/pipeline_artifacts/create_code_quality_mr_diff_report_service.rb b/app/services/ci/pipeline_artifacts/create_code_quality_mr_diff_report_service.rb new file mode 100644 index 00000000000..5c52eef7ba6 --- /dev/null +++ b/app/services/ci/pipeline_artifacts/create_code_quality_mr_diff_report_service.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true +module Ci + module PipelineArtifacts + class CreateCodeQualityMrDiffReportService + def execute(pipeline) + return unless pipeline.can_generate_codequality_reports? + return if pipeline.has_codequality_mr_diff_report? + + file = build_carrierwave_file(pipeline) + + pipeline.pipeline_artifacts.create!( + project_id: pipeline.project_id, + file_type: :code_quality_mr_diff, + file_format: Ci::PipelineArtifact::REPORT_TYPES.fetch(:code_quality_mr_diff), + size: file["tempfile"].size, + file: file, + expire_at: Ci::PipelineArtifact::EXPIRATION_DATE.from_now + ) + end + + private + + def build_carrierwave_file(pipeline) + CarrierWaveStringFile.new_file( + file_content: build_quality_mr_diff_report(pipeline), + filename: Ci::PipelineArtifact::DEFAULT_FILE_NAMES.fetch(:code_quality_mr_diff), + content_type: 'application/json' + ) + end + + def build_quality_mr_diff_report(pipeline) + mr_diff_report = Gitlab::Ci::Reports::CodequalityMrDiff.new(pipeline.codequality_reports) + + Ci::CodequalityMrDiffReportSerializer.new.represent(mr_diff_report).to_json # rubocop: disable CodeReuse/Serializer + end + end + end +end |