在Artifactory中查找/删除单个工件 - 而不是文件

时间:2016-12-06 09:07:36

标签: artifactory

我对使用Artifactory REST API有疑问。一些指导会很有用。

我正在构建一个运行Artifactory的REST API的脚本。此脚本的目标是查找旧的工件,满足其他一些要求,然后删除它们。 (难道每个Artifactory所有者最终都不会构建其中一个吗?)

有一个记录的"Artifacts Not Downloaded Since",它返回一个文件列表。对于“工件”,我宁愿期望一些包含多个文件的概念(比如Maven:一个POM和一些JAR)。它只返回单个文件的事实让我现在剥离文件名,然后删除整个文件夹。

  1. 查询返回:https://.../repository/api/storage/libs-snapshot-local/com/x/y/1.0.0-SNAPSHOT/y-1.0.0-SNAPSHOT.jar
  2. 我剥离:https://.../repository/api/storage/libs-snapshot-local/com/x/y/1.0.0-SNAPSHOT/
  3. 我删除了剥离的文件夹。
  4. 我很害怕有问题的文件夹包含最近下载的其他文件(POM文件或该文件夹中的其他文件),但现在仍然被删除。

    为什么REST API不会在工件级别(GAV级别)上报告这些内容?

    对于Docker存储库一个相关的问题,“Not Notloaded Since”在什么时候考虑子容器?或者是否有一种方法可以用来删除标签,Artifactory会自动删除相关但未使用的图像/图层文件?

1 个答案:

答案 0 :(得分:8)

对于Docker清理,您需要使用不同的REST API:Deletion and Cleanup for Docker

由于仅返回在一段时间内未下载的工件,因此未下载REST API工件。它不检查GAV级别。最近下载的文件夹中可能存在其他工件。实际上有一个示例脚本可以在this blog中找到,它提供了清理工件的示例。您可以将逻辑添加到此脚本和usq AQL以实现您的目的。此外,如果您正在运行Artifactory Pro添加,则可以使用Artifactory功能通过使用用户插件进行扩展。还有一个示例用户插件,可以在JFrog公共存储库中的Github上找到 - >用户是JFrogDev。您可以创建符合您要求的用户插件。