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

如何循环执行AQL批量删除JFrog Artifactory多仓库中过期制品?

批量操作多仓库删除过期制品的两种实现方案

方案1:直接修改AQL规则批量匹配多仓库(无需循环,推荐)

你不需要拆分循环,直接在AQL的repo匹配规则中用$in语法指定所有需要操作的仓库列表即可,单份spec文件就能完成全量操作,修改后的spec示例如下:

{
  "files": [
    {
      "aql": {
        "items.find": {
          "repo": {"$in": ["repo1", "repo2", "repo3", "repo4"]},
          "modified": { "$lt": "2021-06-06T21:26:52.000Z"}
        }
      }
    }
  ]
}

注:你原AQL里冗余的$or、$and嵌套已简化,单条件下不需要额外套逻辑运算符,功能完全等价。
修改后直接执行原来的删除命令即可:
jfrog rt del --spec /tmp/foo.spec --dry-run
确认dry-run的结果符合预期后再去掉--dry-run参数执行实际删除。

方案2:Shell 循环动态替换仓库名(适合需要单独控制每个仓库执行逻辑的场景)

如果你需要针对每个仓库单独统计、加判断逻辑,可以用shell循环动态生成临时spec文件执行,参考脚本如下:

#!/bin/bash
# 定义需要操作的仓库列表
REPO_LIST=("repo1" "repo2" "repo3" "foobar")
# 定义6个月前的时间阈值(自动生成无需手动修改,Linux环境用如下命令,Mac环境替换为 date -v-6m +%Y-%m-%dT%H:%M:%S.000Z)
EXPIRE_DATE=$(date -d "-6 months" +%Y-%m-%dT%H:%M:%S.000Z)

for repo in "${REPO_LIST[@]}"
do
  echo "正在处理仓库:${repo}"
  # 动态生成临时spec文件
  cat > /tmp/tmp_del_spec.json << EOF
{
  "files": [
    {
      "aql": {
        "items.find": {
          "repo": "${repo}",
          "modified": { "\$lt": "${EXPIRE_DATE}"}
        }
      }
    }
  ]
}
EOF
  # 先执行dry-run验证
  jfrog rt del --spec /tmp/tmp_del_spec.json --dry-run
  # 确认无误后可以注释上面的dry-run命令,打开下面的实际删除命令
  # jfrog rt del --spec /tmp/tmp_del_spec.json
done

给脚本加执行权限后直接运行即可自动遍历所有仓库执行操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:45:02