Artifactory清理未使用的二进制品的最佳实践

Artifactory充分利用了基于Checksum的存储,可是这种机制没法代替常规的工件清理任务。软件开发可能很杂乱,不少时候Artifactory中的许多工件都从未使用过。git

例如,许多CI / CD构建都配置为基于源代码控制提交运行,而且一旦将这些快照构建发送到Artifactory,就永远不会实际下载它们。 github

考虑到软件开发的动态性质,大多数组织都有本身的数据保留策略。由您决定能够清除哪些数据,可是内置工具能够覆盖大多数状况。docker

一般,在Artifactory中使用三种技术来管理工件存储:json

限制保留多少SNAPSHOT
清除超大缓存
删除未使用的工
数组

限制保留多少SNAPSHOT

Artifactory具备内置机制来限制构建的快照。该系统的目的是确保在覆盖release工件以前将其从snapshots存储库中升级出来。缓存

Artifactory支持六种存储库类型的最大惟一快照标记:微信

– Maven  – NuGet
– Gradle  –Ivy
– Docker  – SBT
工具

 

Artifactory使用Artifactory Layout系统跟踪快照的数量。这意味着用户在上载快照工件时须要遵循预约义的模式(大多数客户端会自动处理)。 布局

例如,此Maven JAR文件被识别为快照运行编号3的一部分:spa

jfrog / hello / 1.0.5-SNAPSHOT / hello-1.0.5-20190620.224837-3.jar  

 

大多数CLI客户端使用特定模式进行上传,Artifactory的默认布局应涵盖这些状况。您能够根据须要自定义这些存储库类型的布局,以处理自定义上传路径。

要在Artifactory中启用此功能,请更新本地存储库设置:

启用此设置后,在最大惟一快照数上方进行的上传将在下次构建运行期间删除全部较早的发行版。 

最高的数字将始终是最新版本。

清除超大缓

Artifactory的远程存储库将下载的文件存储在缓存中。一般,保留整个缓存是有益的,由于它能够加快下载速度。可是,若是项目使用的工件有所更改,则值得按期清除缓存。

Artifactory中有支持此功能的内置系统。要启用自动缓存清除,请转到远程存储库菜单的高级部分。 

您能够在“ 未使用的工件清理期部分中添加清理工件以前的小时数:

 

这并不意味着工件会在12小时后被删除。相反,它在内部将工件标记为未使用

“ 管理员”->“高级”->“维护 ” 下找到一个单独的做业,称为清理未使用的缓存工件,它将执行清理。默认状况下,此cron做业天天运行一次。

删除未使用的工

一般,Artifactory一般不会自动删除二进制文件。也有例外,例如本文中已讨论的字段。

话虽如此,经过删除长时间未下载的工件能够节省大量存储空间。自动清除未使用的文件的最佳方法是实施Artifactory User Plugin

JFrog开发的最受欢迎的用户插件之一是“ artifactCleanup”插件。该插件在Cron Job上运行,并自动删除“ X”天以内还没有下载的任何工件。

若是您须要进一步自定义插件,则能够在代码中更改Artifactory Query Language语句:

 def aql =“ items.find{” repo“”“ + repoKey +”“” type“” any“” @ cleanup.skip“” true“})。include” repo“” path “名称类型

须要注意的一件事:artifactCleanupDocker Repositories上不起做用。 

Docker映像层做为单独的工件存储在“ image”文件夹中。若是大多数Docker客户端中已经有一个层,则不会常常下载该层。因为行为上的差别,建议使用单独的“ cleanDockerImages”插件。

它依赖manifest.json文件的下载计数,该文件始终在发生“ docker pull”时下载。

 

 

参考资料:

https://jfrog.com/knowledge-base/artifactory-cleanup-best-practices/

 

补充资料:


- AQL清理:

 

https://jfrog.com/blog/advanced-cleanup-using-artifactory-query-language-aql/

 

-清理已有数据:经过 Rest API 清理 90 天内无人下载的 snapshot,或者是 90 天之前的全部 snapshot,这样可以大大减小存储量,加快索引速度。

 

https://www.jfrog.com/confluence/display/RTF/Managing+Disk+Space+Usage#ManagingDiskSpaceUsage-ManualCleanupwiththeRESTAPI

 

-按期清理新增数据:在页面上配置实时清理 snapshot

 

https://www.jfrog.com/confluence/display/RTF/Managing+Disk+Space+Usage#ManagingDiskSpaceUsage-LimitingtheNumberofSnapshots

 

更多精彩内容能够专一咱们的在线课堂

微信搜索公众号:jfrogchina 获取课程通知

相关文章
相关标签/搜索