2016-12-06 147 views
0

我对Artifactory REST API的使用有疑问。一些指导将是有用的。查找/删除Artifactory中的单个工件 - 不是文件

我正在构建一个练习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. 我删除该剥离文件夹。

我担心该文件夹中包含其他文件(POM文件或该文件夹中的其他文件),该文件最近下载过,但现在仍然被删除。

为什么REST API在工件级别(GAV级别)上不报告这种东西?

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

回答

7

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

REST API工件未下载,因为它只返回未被下载的工件。它不检查GAV级别。最近下载的文件夹中可能还有其他工件。实际上有一个示例脚本,您可以在this blog中找到该脚本,它提供了清理工件的示例。您可以将您的逻辑添加到此脚本和usq AQL中以获得您的目的。另外,如果您正在运行Artifactory Pro,那么您可以使用Artifactory功能通过使用用户插件进行扩展。还有一个示例用户插件,您可以在JFrog公共存储库的Github上找到 - >用户是JFrogDev。您可以创建一个满足您需求的用户插件。

+0

您的答案和链接的文章仍然在工件和文件之间混淆。但是,是的,你在哪里说“GAV级别”,这就是我想要与Artifactory交互的方式,我称之为“与** artifacts **交互”。但是,如果_files_真的是我所得到的,那么“未下载的文物”呼叫似乎很没用。 AQL似乎有同样的缺陷。也许唯一剩下的就是:获取“Artifacts Not Downloaded Since”,解析它们的文件夹URI,获取文件夹中的所有文件,查看是否有最近下载的文件,跳过。随着资源库的增长,这将非常低效。 –

相关问题