Keep latest pipeline artifact forever
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
-
📋 Does this MR need a changelog?-
I have included a changelog entry.
-
-
Documentation (if required) -
Code review guidelines - [-] Merge request performance guidelines
-
Style guides - [-] Database guides
- [-] Separation of EE specific content
Availability and Testing
- [-] Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process.
- [-] Tested in all supported browsers
- [-] Informed Infrastructure department of a default or new setting change, if applicable per definition of done
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