高级存储库-获得更多的开箱即用!

代理远程存储库和从它们缓存外部工件的能力是至关重要的,无论它们是Docker映像、NuGet包、npm、tar.gz文件,还是我们用来创建自己产品的任何依赖项。hth华体会最新官方网站它加速了我们的构建,确保了可靠的访问,提供了对材料账单的控制,并提供了更多的好处,使它成为当今CI / CD领域中不可或缺的实践。

当与Artifactory合作时,我们通常会有一个指向JCenter的远程回购,其他指向其他相关的公共存储库,如Docker Hub, NuGet Gallery, npm注册表,PyPI等。通过配置虚拟存储库的能力,我们为构建工具、用户和不同的客户端提供了一个单独的端点来解析所有所需的工件,首先查看本地和缓存的项,然后进行远程搜索。

当我们的依赖项都是特定的发布版本时,这种方法非常有效。当您的团队在地理上分布在同一个项目上时,或者当您有不同的相互依赖的项目时,事情就变得更加复杂了,这些项目经常被修改,需要与彼此的快照版本保持最新。

复制是答案,真的是这样吗?

一种解决方案是使用Artifactory的能力来复制存储库(拉动遥控器而且multi-pushFor local),如果你需要保持完全同步,这是完美的。同步可以在cron表达式上计时,也可以由事件触发。这将负责主动下载新的工件,删除已远程删除的工件,并确保属性总是同步的。

复制的问题是,当存储库装载了许多工件时,它可能会导致负载和带宽密集。如果您可以只获得团队同步所需的工件,并避免不必要的负载和网络流量,这不是很好吗?你猜怎么着。你可以。让我向您介绍Artifactory的最新功能之一……

智能远程存储库

在Artifactory中,远程存储库由您下载和缓存工件的远程资源的URL表示。但是,如果该URL恰好指向Artifactory的另一个实例中的存储库呢?这种亲缘关系需要被利用。如果我的Artifactory正在代理另一个Artifactory中的存储库,那么这些表实例没有理由不互相通信并做一些聪明的事情。

  1. 自动检测
    因此,第一件事是Artifactory识别它自己的类型,如果您的远程存储库的URL指向Artifactory的另一个实例,您将看到一个对话框,您可以在其中配置这两个实例将如何交互。
    智能远程截屏
  2. 报告统计
    另一方面的挑战之一是如何能够知道哪些项正在其他存储库中被使用。目前,我们能够知道一个工件被下载的时间,最后的下载时间以及最后由谁下载它。我们经常在我们的清理脚本中使用这些信息,以确保我们不会远程删除一个会破坏别人构建的项目。这里的问题是,一旦一个项目被缓存,计数器就会增加1,接下来的任何下载请求都将直接来自缓存,从而不可能知道这个项目是否仍然在使用。当选中此选项时,远程缓存上的每个下载请求也将更新一个名为remote Downloads的新字段,以跟踪从代理回购的其他缓存存储库进行的远程下载的数量。这个字段可以在我们的干净脚本中使用,以确保我们可以在周一安全返回工作,而不必担心在发布前会有糟糕的事情发生。
  3. 同步性能
    通常,一旦您从远程存储库缓存了一个工件,您将不会知道在远程资源上注释该工件的任何属性是否发生了更改。但是通过智能远程存储库,您可以做到这一点。如果您在远程存储库配置中选中此框,那么每次有获取工件属性的请求时,Artifactory将根据远程实例中原始工件上对应的属性验证它们的值。对远程项目属性的任何更改(更新、添加、删除)都将自动同步到本地缓存的副本,而不必再次下载工件。因此,例如,如果您下载了一个状态为“发布候选”的工件,并且构建它的远程团队稍后将其状态更改为“集成测试失败”,那么在您下次检查是否可以使用该工件时,本地缓存副本上的状态将自动更新。您不希望发布一个集成测试失败的工件,对吗?
  4. 远程列表浏览,你从未想过可能
    由于各种原因,Artifactory支持的许多包类型不提供列表浏览,但是,由于智能远程存储库将内容保存在家族中,Artifactory知道如何克服这种限制,并允许您在一直想要但无法进行远程浏览的地方进行浏览,例如Docker, NuGet, npm, Bower, PyPI等等
  5. 删除提示
    如果一个项目你缓存已被删除从远程存储库你将能够看到这个指示Artifactory和知道你正在使用一个工件,不再可用,这可能是非常有用的,如果因为某些原因你根据这个工件所以你可能想要把它移动到一个本地存储库,所以下次你会清理你的缓存你将不再能够从远程存储库下载一遍。

这仅仅是个开始。您可以期待诸如下载统计信息的同步、链接多个Artifactory实例时的传递性同步、在远程存储库上执行AQL搜索、远程推送工件等功能,以及随着智能远程存储库变得越来越智能的更多功能。

(2015年10月更新)