Gitlab容器注册表标记过期策略不起作用-正则表达式格式?日程

Gitlab容器注册表标记过期策略不起作用-正则表达式格式?日程,gitlab,gitlab-ci,Gitlab,Gitlab Ci,我正在尝试Gitlab的“CI/CD>容器注册表标记过期策略”设置,到目前为止,它没有删除任何内容。我们使用语义版本控制(前面有一个“v”字),我的目标是自动删除旧的“补丁”版本: 保留所有主要和次要标记:vM.0.0和vM.m.0 删除所有匹配vM.m.p(其中p不是零)的最近标记,但不删除少数标记 考虑到我在一个旧项目上启用了这个新设置,通过实验找到我的答案是有风险的。即使是在一个新项目上,实验也需要花费大量的精力和日历时间。一个干运行或预览选项在这里会非常好,所以我可以尝试设置而不用担

我正在尝试Gitlab的“CI/CD>容器注册表标记过期策略”设置,到目前为止,它没有删除任何内容。我们使用语义版本控制(前面有一个“v”字),我的目标是自动删除旧的“补丁”版本:

  • 保留所有主要和次要标记:vM.0.0和vM.m.0
  • 删除所有匹配vM.m.p(其中p不是零)的最近标记,但不删除少数标记
考虑到我在一个旧项目上启用了这个新设置,通过实验找到我的答案是有风险的。即使是在一个新项目上,实验也需要花费大量的精力和日历时间。一个干运行或预览选项在这里会非常好,所以我可以尝试设置而不用担心删除重要的标签

我尝试了以下“expire”正则表达式:
v[1-9][0-9]*[.][0-9][0-9]*[.][1-9][0-9]*
。到目前为止还没有任何效果。这让我想知道:

  • 多长时间运行一次?我需要再等一会儿吗
  • 我是否误解了这种设置的工作方式
  • 我的正则表达式不好吗
  • 甚至,预期的正则表达式格式是什么?
    • 在UI中有一个更复杂的例子会更好。提到了这一点,但没有提到这一点
  • 是否有任何方法可以查看有关此清理的反馈,比如在项目活动日志中
我目前的做法是每天调整一次这个设置,然后第二天检查我的标签列表,看看它是否有任何效果

我希望得到验证/排除此设置的一般建议,和/或如何匹配我的特定版本方案的具体建议

以下是我当前设置的屏幕截图:


我最终放弃了这一点,采取了不同的方法。最令人沮丧的可能是想知道它什么时候运行。是每天一次吗?每天的随机时间?每次推送到注册表后一次?我从来都不知道要等多久,看看我的设置是否改变了

相反,我发现了一个公开所有相同选项的API方法。实际上,比起项目设置,我更喜欢API

  • 我可以更清楚地看到它是如何运行的&何时运行的
  • 我可以看到错误消息和结果
  • 我可以在git.gitlab-ci.yml中跟踪配置,而不必记录单独的项目设置
提供概述和一些卷曲示例。下面是我如何将其添加到管道中的:

# In before_script:
- apk --update add curl

...

# In the job script:
    # Get registry id. Assumptions: valid response, "id" is first field, and project only has one registry.
    - REGISTRY_ID=`curl --header "PRIVATE-TOKEN:$API_TOKEN" "https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/registry/repositories" | cut -d, -f1 | cut -f2 -d:`
    - TAGS_URL=https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/registry/repositories/$REGISTRY_ID/tags
    - curl --request DELETE --data 'keep_n=10' --data 'older_than=1week' --data "name_regex_delete=v[0-9][.].*" --data "name_regex_keep=.*[.]0" --header "PRIVATE-TOKEN:$API_TOKEN" "$TAGS_URL"
使用API,我能够快速找出哪些正则表达式模式有效。这不是立竿见影的,但似乎在一分钟内就生效了。我假设我可以使用相同的正则表达式并在项目设置中使用它们,但我现在更愿意使用API