You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求用于Azure Pipeline的PowerShell脚本:保留ACR最新10个镜像

Azure Pipeline内联PowerShell脚本:ACR自动保留最新10个镜像标签

脚本说明

  • 适配Azure Pipeline的AZ CLI任务,以内联PowerShell脚本形式运行
  • 自动清理指定ACR仓库中旧镜像标签,仅保留最新10个(可自定义数量)
  • 支持排除特定标签(如latest)避免误删

完整脚本

# 配置参数
$acrName = "your-acr-name"          # 替换为你的ACR实例名称
$repositoryName = "your-repo-name"  # 替换为目标镜像仓库名称
$keepCount = 10                     # 需保留的最新镜像标签数量
$excludeTags = @("latest")          # 无需删除的标签列表(可选)

# 获取所有镜像标签,按创建时间降序排序
$tags = az acr repository show-tags --name $acrName --repository $repositoryName --orderby time_desc --output json | ConvertFrom-Json

# 过滤排除标签后,筛选出需要删除的旧标签
$tagsToDelete = $tags | Where-Object { $_ -notin $excludeTags } | Select-Object -Skip $keepCount

if ($tagsToDelete.Count -eq 0) {
    Write-Host "无需执行删除操作:当前符合条件的标签数量≤$keepCount"
    exit 0
}

Write-Host "将删除以下$($tagsToDelete.Count)个镜像标签:"
$tagsToDelete | ForEach-Object { Write-Host "- $_" }

# 批量删除目标标签
foreach ($tag in $tagsToDelete) {
    Write-Host "正在删除标签: $tag"
    az acr repository delete --name $acrName --repository $repositoryName --tag $tag --yes
    if ($LASTEXITCODE -ne 0) {
        Write-Warning "删除标签$tag失败,错误码:$LASTEXITCODE"
    }
}

Write-Host "清理完成,已保留最新$keepCount个镜像标签"

使用步骤

  1. 在Azure Pipeline中添加Azure CLI任务,关联拥有ACR操作权限的服务连接
  2. 任务类型选择PowerShell,将上述脚本粘贴至内联脚本输入框
  3. 替换脚本中的$acrName和$repositoryName为你的实际资源名称
  4. 按需调整$keepCount修改保留数量,或更新$excludeTags添加需保护的标签
  5. 确保服务主体拥有ACR的AcrDelete和AcrPull权限

注意事项

  • 脚本会永久删除镜像标签,建议先在测试环境验证逻辑
  • 若镜像标签总数≤保留数量,脚本将直接退出,不执行任何删除操作
  • 执行az acr repository delete时,若目标镜像manifest无其他标签关联,会同时删除底层镜像层

内容的提问来源于stack exchange,提问作者OoO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 23:55:13