Skip to content

Keep latest pipeline artifact forever

Max Orefice requested to merge mo-keep-latest-pipeline-artifact-forever into master

Ref: #321323 (closed)

What does this MR do?

This MR prevents PipelineArtifact purging mechanism if no new artifacts have been introduced.

It's based on the same implementation than our job_artifact.

Latest artifacts will not be deleted (even if expired) until newer artifacts are available.

Why are we doing this?

A PipelineArtifact is by default an aggregation of several JobArtifact generated after pipeline completion.

By implementing the same logic we currently have for our JobArtifact we offer a consistent experience to our users.

Database

Click to see the new query introduced by this MR

Query

As pointed out by @shinya.maeda we don't need to introduce a new index yet as we are returning only 100 rows at most.

If we need to improve the ~performance of artifacts purging we would then need to introduce a new index for it:

CREATE INDEX index ON ci_pipelines USING btree (id, locked)

SELECT
    ci_pipeline_artifacts.*
FROM
    ci_pipeline_artifacts
    INNER JOIN ci_pipelines ON ci_pipelines.id = ci_pipeline_artifacts.pipeline_id
WHERE
    ci_pipelines.locked = 0

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • [-] Label as security and @ mention @gitlab-com/gl-security/appsec
  • [-] The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • [-] Security reports checked/validated by a reviewer from the AppSec team
Edited by Max Orefice

Merge request reports