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