3

我正在使用 Artifactory 来支持企业多模块项目。通常,我们更改模块的名称,并且 POM 文件中的相关依赖项不会更新为使用新的模块名称。由于 SNAPSHOT 依赖项不会定期自动清理,因此这些旧模块引用可能会在那里停留数月。当我将 Artifactory 迁移到另一台服务器时,我发现了一些,旧的模块依赖关系导致构建错误。我每晚都在使用 Jenkins 构建这些 SNAPSHOT 工件,所以我想要一些方法来自动清理 SNAPSHOT 工件。

Artifactory(或其他工件服务器,如 Nexus)是否支持如果 SNAPSHOT 工件超过 X 天,则删除工件的概念?是否有另一种方法可以自动化工件服务器清理以完成我想做的事情?我唯一能想到的就是创建一个 cron 作业,在每晚构建开始之前定期清除 libs-snapshot-local。有人已经建立了这种能力吗?

4

3 回答 3

2

据我所知,Artifactory 没有自动删除超过某个值的模块的方法。在我的商店中,我们编写了一个 Groovy 客户端,它使用Artifactory 的 REST API来执行此操作。

请注意,如果您的工件是共享库,则在删除它们之前,您需要小心不要依赖它们。我们的脚本也考虑到了这一点。

如果您有兴趣跟进,请发表评论,我会看看是否可以与您分享我们的脚本。

于 2012-12-10T21:06:35.853 回答
2

另一种解决方案可能是用户插件。您可以编写一个简单的 Groovy 脚本,该脚本将按计划在 Artifactory 本身中运行(与 REST Gareth 提出的远程调用相反),搜索长时间未下载的工件并将其删除

于 2012-12-14T23:17:32.200 回答
2

我制作了一个 Ruby 脚本来删除 X 天内未下载的工件。它的工作方式就像 JBaruch 在他的回答中提到的那样。

它不是插件。它适用于 Artifactory 开源。插件仅受 Artifactory Pro 支持。

源代码:https ://gist.github.com/aleung/5203736

于 2013-03-29T15:01:18.633 回答