artifactory - 通过 Artifactory REST API 进行高效的服务器端批量删除
问题描述
我正在寻找一种有效的方法来删除大量工件,这些工件从 Artifactory 分布在各个位置(通过搜索查询检索)。
我尝试使用 JFrog CLI 'rt del' 命令(连同 AQL 文件)来搜索然后删除结果,这很有效。但是,我发现我们的实例的移除速度非常慢 - 大约 1 个工件移除/秒。我将需要移除数十万件文物,这将花费太长时间。所以我正在寻找一种完全在服务器端执行的批量删除机制。
我注意到 Artifactory UI 支持“搜索存储”功能,可以在其中执行搜索,然后保存并可以对结果采取行动(包括删除操作)。这可以通过 REST API 获得吗?这似乎很适合这个用例。
或者,有没有办法在 UI 中按创建日期执行搜索?如果是这样,我大概可以使用搜索存储功能并在搜索存储上执行删除。
我能想到的最后一个选择是编写一个自定义插件来完成这项工作,但我希望有一种更简单的方法,因为它看起来像一个半常见的情况。
提前致谢!
解决方案
从搜索存储中删除会从存储结果中删除工件,但不会从工件中删除(根据我的理解)。
有可用的 groovy 插件可以根据几个条件清除您的工件(下面的链接)
我发现 Artifactory AQL 在搜索和删除工件方面非常有帮助。
我还编写了一个自定义清理脚本,该脚本又使用 aql 删除用于 repo 正则表达式匹配的工件,并检查工件提升状态
推荐阅读
- node.js - 在无状态 Node.js 应用程序中调度函数调用
- javascript - 模糊事件处理
- c# - F# 在非确定性浮点计算上是否受到相同的 C# 警告?
- reactjs - 使用 Spacemacs 时 npm run 崩溃
- json - Splunk 无法识别正则表达式
- google-cloud-storage - 谷歌云 SQL 恢复 BAK 文件
- firebase - 需要 Docker Firestore 项目 ID
- python - 确保计算完成 64 位(或至少警告溢出)
- reactjs - 我需要从 React 中的 Contentful 构建作者页面
- javascript - Flask + Scrapy:无法加载资源:net::ERR_CONNECTION_RESET