Use PipelineArtifacts to improve performance of inline code coverage feature
Summary
We have introduced PipelineArtifacts in order to better represent the report necessary to improve the performance of the inline code coverage feature. This issue represents the work required to use our creation of this class in order to achieve this performance improvement.
sequenceDiagram
participant MergeRequest
participant Pipeline
participant PipelineArtifact
MergeRequest->>Pipeline: has_coverage_reports?
Note right of Pipeline: When pipeline is completed
loop PipelineArtifactService
Pipeline->>PipelineArtifact: Persist coverage report with object storage
end
Note right of MergeRequest: No more ReactiveCaching
Pipeline->>MergeRequest: Read file from object storage
Here a simple class diagram from this proposed architecture:
classDiagram
Pipeline --> PipelineArtifact
PipelineArtifact -- PipelineArtifactUploader
PipelineArtifactUploader <|-- JobArtifactArtifactUploader
class Pipeline {
+has_many: pipeline_artifacts
+has_coverage_reports?()
}
class PipelineArtifact{
+belongs_to :project
+belongs_to :pipeline
+created_at: timestamp
+updated_at: timestamp
+integer: file_type
+integer: file_format
+integer: file_store
+integer: size
+text :file
}