Skip to content
Snippets Groups Projects

Include coverage reports from child pipeline

All threads resolved!
Compare and
4 files
+ 200
25
Compare changes
  • Side-by-side
  • Inline
Files
4
+ 21
3
@@ -327,7 +327,7 @@ class Pipeline < Ci::ApplicationRecord
scope :created_after, -> (time) { where('ci_pipelines.created_at > ?', time) }
scope :created_before_id, -> (id) { where('ci_pipelines.id < ?', id) }
scope :before_pipeline, -> (pipeline) { created_before_id(pipeline.id).outside_pipeline_family(pipeline) }
scope :with_pipeline_source, -> (source) { where(source: source)}
scope :with_pipeline_source, -> (source) { where(source: source) }
scope :outside_pipeline_family, ->(pipeline) do
where.not(id: pipeline.same_family_pipeline_ids)
@@ -1057,6 +1057,10 @@ def latest_test_report_builds
latest_report_builds(Ci::JobArtifact.test_reports).preload(:project)
end
def latest_report_builds_in_self_and_descendants(reports_scope = ::Ci::JobArtifact.with_reports)
builds_in_self_and_descendants.latest.with_reports(reports_scope)
end
def builds_with_coverage
builds.latest.with_coverage
end
@@ -1069,12 +1073,20 @@ def has_reports?(reports_scope)
complete? && latest_report_builds(reports_scope).exists?
end
def has_reports_in_self_and_descendants?(reports_scope)
self_and_descendants.all?(&:complete?) && latest_report_builds_in_self_and_descendants(reports_scope).exists?
end
def has_coverage_reports?
pipeline_artifacts&.report_exists?(:code_coverage)
end
def can_generate_coverage_reports?
has_reports?(Ci::JobArtifact.coverage_reports)
if Feature.enabled?(:ci_child_pipeline_coverage_reports)
has_reports_in_self_and_descendants?(Ci::JobArtifact.coverage_reports)
else
has_reports?(Ci::JobArtifact.coverage_reports)
end
end
def has_codequality_mr_diff_report?
pipeline_artifacts&.report_exists?(:code_quality_mr_diff)
end
def can_generate_codequality_reports?
has_reports?(Ci::JobArtifact.codequality_reports)
end
@@ -1109,7+1121,7 @@
def coverage_reports
Gitlab::Ci::Reports::CoverageReports.new.tap do |coverage_reports|
latest_report_builds(Ci::JobArtifact.coverage_reports).includes(:project).find_each do |build|
report_builds = if Feature.enabled?(:ci_child_pipeline_coverage_reports)
latest_report_builds_in_self_and_descendants(Ci::JobArtifact.coverage_reports)
else
latest_report_builds(Ci::JobArtifact.coverage_reports)
end
report_builds.includes(:project).find_each do |build|
build.collect_coverage_reports!(coverage_reports)
end
end
end
def codequality_reports
Gitlab::Ci::Reports::CodequalityReports.new.tap do |codequality_reports|
latest_report_builds(Ci::JobArtifact.codequality_reports).each do |build|
build.collect_codequality_reports!(codequality_reports)
end
Loading