Artifactory 存储库的实际使用

Practical Use of Artifactory Repositories

在不久的将来,我将开始在我的项目中使用 Artifactory。我一直在阅读有关本地和远程存储库的信息,但对它们的实际用途有些困惑。总的来说据我了解

如果到目前为止我是对的,那么实际上这意味着如果您不开发 npm 模块而仅使用它们来构建您的应用程序,则只需要一个 npm 的远程存储库。反之,如果你需要同时拉取和推送 Docker 个容器镜像,则需要有一个用于推送和拉取自定义镜像的本地仓库和一个用于拉取官方镜像的远程仓库。

问题 #1

我很困惑,因为我们的 Artifactory 管理员为我们的项目创建了一个本地 npm 存储库。当我和他讨论这个话题时,他告诉我,我需要先从互联网上获取包到我的 PC,然后将它们推送到 Artifactory 服务器。这对我来说没有任何意义,因为我在同一台服务器上看到了一些远程存储库,而我们需要的只是从 npm 中拉取包。有没有漏掉的地方?

问题 #2

远程存储库缓存中的工件是否保存到有意删除?是否有默认保留策略(即删除超过 6 个月的包)?我问这个是因为在流星撞击服务器之前保留包裹很重要(为了公司的存档政策)。

问题 #3

我们需要获取官方 Docker 图片并为 CI 定制它们。维护一个用于拉取和推送自定义图像的本地存储库和一个用于拉取官方图像的远程存储库会有点困难。假设我需要拉取官方 Ubuntu latest,修改它,推送并最终拉回自定义图像。在这种情况下,应该使用远程存储库将其拉取,推送到本地存储库并再次从本地存储库中提取。是否可以使用虚拟存储库作为一个存储库无缝地执行此操作?

Question #1 This does not make any sense to me because I have seen some remote repositories on the same server and what we need is only to pull packages from npm. Is there a point that I miss?

通常,您会希望为此使用远程存储库。然后,您可以将您的客户端指向此远程存储库,JFrog Artifactory 将从远程站点获取它们并根据需要在本地缓存它们。

在一些非常安全的环境中,公司政策甚至不允许这样做(它们甚至可能没有连接到 Internet),而是手动下载、审查然后将这些第三方库上传到本地存储库。我不认为这是你的情况,他们可能只是不理解他们的预期用途。

Question #2 Are artifacts at remote repository cache saved until intentionally deleted? Is there a default retention policy?

它们不会被删除,除非您主动配置它这样做。

对于某些回购类型,有内置的保留机制,例如快照数量或最大标签数,但并非所有这些都适用,即使在那些有这些类型的情况下,也必须主动打开它们。不同的组织对于工件必须维护多长时间有不同的策略。 cleanup 那些旧工件有很多方法,但最终将取决于您自己的要求。

问题 #3 是否可以使用虚拟存储库作为一个存储库无缝地执行此操作?

虚拟存储库可让您聚合本地和远程站点并显示为单一来源。所以你可以这样做:

docker pull myarturl/docker/someimage:sometag ... docker 构建 ... docker push myarturl/docker/someimage:sometag-my-modified-version docker pull myarturl/docker/someimage:sometag-my-modified-version

它也具有安全意识,因此如果用户只能访问本地内容而不能访问远程内容,即使他们使用的是包含这两种内容的虚拟存储库,他们也只能访问本地内容他们。

也就是说,我不明白为什么显式使用不同的存储库会更难: docker pull myarturl/docker-remote/someimage:sometag ... docker 构建 ... docker push myarturl/docker-local/someimage:sometag-my-modified-version docker pull myarturl/docker-local/someimage:sometag-my-modified-version

这还有一个额外的好处,即您知道他们只能拉取您修改后的图像版本,而不能拉取远程图像(尽管您也可以通过创建正确的权限来实现)。