Skip to content

Add name_regex_keep to ContainerExpirationPolicy

Steve Abrams requested to merge 207267-retain-image-policy into master

What does this MR do?

This adds a new column name_regex_keep to container_expiration_policies and updates the project api to allow the new attribute to be saved.

This will allow container expiration policies to specify image tags that should never be deleted. This extends the work completed in !25484 (merged) which added name_regex_keep to the bulk tag deletion API endpoint. That MR implemented the logic to use the new param in the tag deletion process.

A frontend MR will follow this MR to update the frontend form to include this new attribute.

Database

Up Migration

== 20200415192656 AddNameRegexKeepToContainerExpirationPolicies: migrating ====
-- add_column(:container_expiration_policies, :name_regex_keep, :text)
   -> 0.0015s
-- transaction_open?()
   -> 0.0000s
-- execute("ALTER TABLE container_expiration_policies\nADD CONSTRAINT container_expiration_policies_name_regex_keep\nCHECK ( char_length(name_regex_keep) <= 255 )\nNOT VALID;\n")
   -> 0.0007s
-- execute("SET statement_timeout TO 0")
   -> 0.0002s
-- execute("ALTER TABLE container_expiration_policies VALIDATE CONSTRAINT container_expiration_policies_name_regex_keep;")
   -> 0.0005s
-- execute("RESET ALL")
   -> 0.0002s
== 20200415192656 AddNameRegexKeepToContainerExpirationPolicies: migrated (0.0124s)

Down Migration

== 20200415192656 AddNameRegexKeepToContainerExpirationPolicies: reverting ====
-- execute("ALTER TABLE container_expiration_policies\nDROP CONSTRAINT IF EXISTS container_expiration_policies_name_regex_keep\n")
   -> 0.0009s
-- remove_column(:container_expiration_policies, :name_regex_keep)
   -> 0.0005s
== 20200415192656 AddNameRegexKeepToContainerExpirationPolicies: reverted (0.0076s)

Screenshots

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

Related #207267 (closed)

Edited by Steve Abrams

Merge request reports