簡體   English   中英

ACR 清除 - 如何設置正則表達式以跳過清除以 v 開頭的特定圖像

[英]ACR purge - How can i set regular expression to skip specific image which starts with v from purging

我正在管理一個 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:.' --filter 'ubuntu:.' --ago 7d --untagged --keep 5"

az acr run --cmd "$PURGE_CMD" --registry Myregistry /dev/null

謝謝阿希什

請檢查以下是否給出了解決方法的想法:

在這里,我嘗試使用刪除命令。

grep -v >>反轉匹配意義,為select非匹配行。

Grep -o >> 僅顯示與 PATTERN 匹配的匹配行的一部分。 grep - 參考

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. 從 acr 中獲取最新圖像,該圖像不以前綴開頭
  2. 天藍色容器注冊表刪除
  3. 如何從 azure 容器注冊表中刪除圖像
  4. acr-僅刪除舊圖像-

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM