Artifactory 充分利用了 基于 Checksum 的存储 ,但是这种机制无法代替常规的工件清理任务。软件开发可能很杂乱,很多时候 Artifactory 中的许多工件都从未使用过。
例如,许多 CI / CD 构建都配置为基于源代码控制 “ 提交 ” 运行,并且一旦将这些快照构建发送到 Artifactory ,就永远不会实际下载它们。
考虑到软件开发的动态性质,大多数组织都有自己的数据保留策略。由您决定可以清除哪些数据,但是内置工具可以覆盖大多数情况。
通常,在 Artifactory 中使用三种技术来管理工件存储:
–
限制保留多少
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 ,这样能够大大减少存储量,加快索引速度。
- 定期清理新增数据: 在页面上配置实时清理 snapshot :
更多精彩内容可以专注我们的在线课堂
微信搜索公众号:jfrogchina 获取课程通知
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69954434/viewspace-2679482/ ,如需转载,请注明出处,否则将追究法律责任。