Keep tags based on regex (#61)

* Ignore tags from purging by regexp
This commit is contained in:
Dieter Maes
2022-04-08 16:21:36 +02:00
committed by GitHub
parent 31b16bb17a
commit 76f380d3c2
3 changed files with 12 additions and 4 deletions

View File

@@ -2,6 +2,7 @@ package registry
import (
"fmt"
"regexp"
"sort"
"time"
@@ -32,7 +33,7 @@ func (p timeSlice) Swap(i, j int) {
}
// PurgeOldTags purge old tags.
func PurgeOldTags(client *Client, purgeDryRun bool, purgeTagsKeepDays, purgeTagsKeepCount int) {
func PurgeOldTags(client *Client, purgeDryRun bool, purgeTagsKeepDays, purgeTagsKeepCount int, purgeTagsKeepRegexp string) {
logger := SetupLogging("registry.tasks.PurgeOldTags")
dryRunText := ""
if purgeDryRun {
@@ -83,10 +84,14 @@ func PurgeOldTags(client *Client, purgeDryRun bool, purgeTagsKeepDays, purgeTags
sort.Sort(sortedTags)
repos[repo] = sortedTags
// Filter out tags by retention days.
// Filter out tags by retention days and regexp
for _, tag := range repos[repo] {
regexpKeep := false
if purgeTagsKeepRegexp != "" {
regexpKeep, _ = regexp.MatchString(purgeTagsKeepRegexp, tag.name)
}
delta := int(now.Sub(tag.created).Hours() / 24)
if delta > purgeTagsKeepDays {
if !regexpKeep && delta > purgeTagsKeepDays {
purgeTags[repo] = append(purgeTags[repo], tag.name)
} else {
keepTags[repo] = append(keepTags[repo], tag.name)