Artifactory Cleanup最佳实践

帕特里克·罗素
2022-12-25 36

软件开发可能是一件混乱的事情。通常,在Artifactory中会有许多永远不会被使用的工件。尽管Artifactory充分利用了checksum-based存储,这并不能取代您定期执行工件清理任务的需要。例如,尽管CI/CD构建配置为基于源代码控制提交,这些快照构建一旦发送到Artifactory,就不会真正下载。

作为数据保留政策因公司而异,决定需要清理哪些数据是您义不容辞的责任。此后,Artifactory的内置的工具可以帮助你处理你想要处理的大多数情况。

一般来说,有三个用于管理Artifactory中工件存储的各种技术:

  • 清算超大的缓存
  • 删除未使用的工件
  • 限制的数量建立快照被保留下来

最后一个目的是为了确保释放在快照存储库被覆盖之前,构件将被提升出快照存储库。

Artifactory支持最大快照唯一性标记用于六种存储库类型:

- Maven - NuGet
-葛拉德尔-艾薇
—Docker—SBT

因为Artifactory使用a仓库布局系统要跟踪快照,就需要坚持一个定义模式上传工件快照时。对于大多数客户来说,一旦这些限制被编程到系统中,其余的将自动无缝地发生。例如,下面的Maven JAR文件被识别为第3次快照运行的一部分:

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

用户添加图片

大多数CLI的客户将上传的快照坚持特定校验和政策和快照版本的行为,Artifactory的默认布局应该能够解决这个问题。否则,您可以根据需要定制存储库类型布局来处理特定的上传路径。要启用此功能自定义选项在Artifactory中,更新您的本地存储库设置:

用户添加图片

启用此设置时,在任何给定的构建运行期间,如果上传的快照达到您输入的最大惟一快照数量,则旧版本将自动删除。最高的数字总是你的最新版本。

清除超大缓存

Artifactory的远程存储库将下载的文件存储在缓存中。保留整个缓存通常是有益的,因为它可以加速下载。然而,如果工件用于给定的项目变更,您可能会发现值得这样做定期清除缓存。如果您希望Artifactory为您执行自动缓存清理,请转到远程存储库菜单的Advanced选项卡。在缓存下面未使用工件清理期(Hr)节中,您可以定义必须经过多少小时,在此之后,未使用的工件将不会被删除,而只是在内部标记为未使用的

用户添加图片

要配置和/或触发这种类型的缓存清理,可以在下面找到cron作业Admin > >高级维护在Artifactory 6。X和Admin > Artifactory >高级>维护在Artifactory 7.X。的清理未使用的缓存工件字段将在默认情况下每天执行一次缓存清理。

删除未使用的工件

Artifactory不会自动删除二进制文件,除非您使用上述引用的字段进行定义异常.此外,您可以通过删除未下载的工件来节省大量存储空间长时间的时间。自动清除这些未使用的文件的最佳方法是使用Artifactory用户插件。

其中,最受欢迎的是artifactCleanup插件,它运行在一个cron作业,自动删除尚未下载的任何工件。x“天数。如果您想进一步自定义此插件,您可以更改Artifactory查询语言(AQL)语句:

Def aql = "items. "找到({“回购”:“+ repoKey +”“,“类型”:“任何”、“@cleanup.skip”:"真正的"})。Include ("repo", "path", "name", "type")"

请注意: artifactCleanup在Docker存储库上不起作用。Docker映像层作为单独的工件存储在映像文件夹中。如果一个层已经在大多数Docker客户端中,它就不会经常被下载。由于这种行为差异,我们建议使用cleanDockerImages插件.依靠的是下载计数manifest.json文件时,Docker客户端总是会下载它码头工人拉发生。