gpt4 book ai didi

regex - ACR 清除 - 如何设置正则表达式以跳过清除中以 v 开头的特定图像

转载 作者:行者123 更新时间:2023-12-03 05:22:13 25 4
gpt4 key购买 nike

我正在管理 Azure 容器注册表。我安排了一个 ACR 清除任务,该任务将删除所有超过 7 天的图像标签,并排除以 v 开头的版本化图像,以便我们可以跳过清理中的某些图像。

例如:如果图像的名称类似于

123abc
v1.2
v1.3
xit5424
v1.4
34xyurc
v2.1

因此它应该删除不以v开头的图像,并且应该删除不以v开头的图像。例如,它应该删除下面的图像-

123abc
xit5424
34xyurc

我的脚本是这样的。

PURGE_CMD="acr purge --filter 'Repo1:.' --过滤'ubuntu:。' --ago 7d --untagged --keep 5"

az acr 运行--cmd“$PURGE_CMD”--registry 我的注册表/dev/null

谢谢阿什

最佳答案

请检查以下是否提供了解决方法:

这里我尝试使用删除命令。

grep -v >>Invert the sense of matching, to select non-matching lines.

Grep -o >> Show only the part of a matching line that matches PATTERN.grep - Reference

1)尝试获取与模式“v”不匹配的标签

$tagsArray = az acr repository show-tags --name myacr --repository myrepo --orderby time_desc \
--output tsv | grep -v "v"

如果可能的话,请检查下面的清除命令(未测试)

PURGE_CMD="acr purge --filter 'Repo1:.' --filter 'ubuntu:.' --ago 7d --filter '$tagsArray' --untagged --keep 5"
az acr run --cmd "$PURGE_CMD" --registry Myregistry /dev/null

(或)

使用删除命令检查

例如:

$repositoryList = (az acr repository list --name $registryName --output json | ConvertFrom-Json)

foreach ($repo in $repositoryList)
{
$tagsArray = az acr repository show-tags --name myacr --repository myrepo --orderby time_desc \
--output tsv | grep -v "v"

foreach($tag in $tagsArray)
{
az acr repository delete --name $registryName --image $repo":"$tag --yes

}
}

或者我们可以通过查询获取所有不应该被删除的标签,并且可以使用 if else 语句标签。

foreach ($repo in $repositoryList)
{

$AllTags = (az acr repository show-tags --name $registryName --repository $repo --orderby time_asc --output json | ConvertFrom-Json ) | Select-Object -SkipLast $skipLastTags


$doNotDeleteTags=$( az acr repository show-tags --name $registryName --query "[?contains(name, 'tagname')]" --output tsv)

#or $doNotDeleteTags = az acr repository show-tags --name $registryName --repository $repo --orderby time_asc --output json | ConvertFrom-Json ) -- query "[?starts_with(name,'prefix')].name"


foreach($tag in $AllTags)
{

if ($donotdeletetags -contains $tag)
{
Write-Output ("This tag is not deleted $tag")
}
else
{
az acr repository delete --name $registryName --image $repo":"$tag --yes
}

}
}

引用文献:

  1. fetch-the-latest-image-from-acr-that-doesnt-start-with-a-prefix
  2. azure-container-registry-delete
  3. how-to-delete-image-from-azure-container-registry
  4. acr-delete-only-old-images-

关于regex - ACR 清除 - 如何设置正则表达式以跳过清除中以 v 开头的特定图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71290848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com