前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Artifactory清理未使用的二进制品的最佳实践

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

原创
作者头像
JFrog杰蛙科技
修改2020-03-11 09:47:53
3.5K0
修改2020-03-11 09:47:53
举报
文章被收录于专栏:JFrog杰蛙DevOpsJFrog杰蛙DevOps

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

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

考虑到软件开发的动态性质,大多数组织都有自己的数据保留策略。由您决定可以清除哪些数据,但是内置工具可以覆盖大多数情况。

通常,在Artifactory中使用三种技术来管理工件存储:

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

限制保留多少SNAPSHOT

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

Artifactory支持六种存储库类型的“最大唯一快照”标记:

– Maven – NuGet – Gradle –Ivy – Docker – SBT

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

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

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 “,”名称“,”类型“)”

需要注意的一件事:artifactCleanup在Docker 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 获取课程通知

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 限制保留多少SNAPSHOT
  • 清除超大缓存
  • 删除未使用的工件
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档