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

无需插件与JFrog CLI,通过Artifactory Delete REST API按时间段删制品

用Artifactory REST API按时间过滤删除旧制品

可以通过**Artifactory Query Language (AQL)**结合REST API实现按天数/月数过滤删除旧制品,步骤分为「查询符合条件的制品」和「批量删除」两部分,以下是具体操作:

1. 查询指定时间前的制品

使用AQL可以筛选出最后修改/创建时间超过指定天数的制品,通过curl发送POST请求到AQL搜索接口:

curl -u 你的用户名:你的密码/API密钥 -XPOST "http://你的Artifactory地址/artifactory/api/search/aql" -d '
items.find({
  "repo": "目标仓库名",
  "path": {"$match": "目标文件夹/*"}, # 匹配目标文件夹下的所有内容
  "last_modified": {"$lt": now() - 30*24*3600*1000} # 筛选30天前修改的制品
}).include("repo", "path", "name")
'

参数说明:

  • repo:替换为你要清理的仓库名称
  • path:$match后填目标文件夹路径,*表示匹配该文件夹下所有层级的内容
  • last_modified:按最后修改时间过滤,若要按创建时间过滤,替换为created
  • 30*24*3600*1000:30天对应的毫秒数,可修改为需要的天数(比如90天则改为90*24*3600*1000)

执行后会返回符合条件的制品列表,包含仓库、路径和文件名。

2. 批量删除查询到的制品

可以结合jq(需提前安装,若没有也可手动提取路径)解析查询结果,循环调用删除接口:

# 先查询并解析出制品完整路径,再逐个删除
curl -u 你的用户名:你的密码/API密钥 -XPOST "http://你的Artifactory地址/artifactory/api/search/aql" -d '
items.find({
  "repo": "目标仓库名",
  "path": {"$match": "目标文件夹/*"},
  "last_modified": {"$lt": now() - 30*24*3600*1000}
}).include("repo", "path", "name")
' | jq -r '.results[] | "/artifactory/\(.repo)/\(.path)/\(.name)"' | while read -r item_path; do
  curl -u 你的用户名:你的密码/API密钥 -XDELETE "http://你的Artifactory地址$item_path"
done

注意事项:

  • 请先单独执行查询命令,确认返回的制品是你要删除的内容,再执行删除操作
  • 若没有jq,可以手动复制查询结果中的路径,拼接成http://你的Artifactory地址/artifactory/仓库名/路径/文件名,逐个调用DELETE请求
  • 确保你的账号有对应仓库的删除权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:40:28