您的远程存储库有多聪明?
注:此文已于2021年6月14日更新
代理远程存储库和缓存外部构件的能力至关重要,无论它们是Docker映像、NuGet包、npm tar.gz文件还是我们用于创建自己产品的任何依赖项。hth华体会最新官方网站它加速了我们的构建,确保了可靠的访问,提供了对材料清单的控制,并提供了更多的好处,使其成为当今CI / CD领域不可或缺的实践。
在使用Artifactory时,我们通常会有一个远程回购指向JCenter,而另一个则指向其他相关的公共存储库,例如码头工人中心, NuGet画廊,npm注册表,PyPI等。通过配置虚拟存储库的能力,我们为我们的构建工具、用户和不同的客户端提供了一个解决所有所需工件的单一端点,首先查看本地和缓存项,然后远程搜索。
当我们的依赖项都是特定的发布版本时,这种方法非常有效。当您有地理上分布的团队在同一个项目上工作时,或者当您有不同的相互依赖的项目时,情况会变得更加复杂,这些项目需要不断修改,并且需要使用彼此的快照版本保持最新。
复制是答案,真的吗?
一种解决方案是使用Artifactory复制存储库的能力(拉动遥控器,推而且multi-push对于本地),如果你需要保持完全同步,这是完美的。同步可以在cron表达式上计时,也可以由事件触发。这将负责主动下载新的工件,删除远程删除的工件,并确保属性始终保持同步。
复制的问题在于,当存储库装载了许多工件时,它可能会占用大量的负载和带宽。如果您可以只获得团队同步所需的工件,并避免不必要的负载和网络流量,这不是很棒吗?你猜怎么着。你可以。让我向您介绍Artifactory的最新功能之一……
智能远程存储库
在Artifactory中,a远程存储库由从中下载和缓存工件的远程资源的URL表示。但是,如果该URL恰好指向Artifactory的另一个实例中的存储库呢?这种亲缘关系需要加以利用。如果我的Artifactory正在代理另一个Artifactory中的存储库,那么这些表实例就没有理由不相互通信并做一些聪明的事情。
- 自动检测
因此,第一件事是Artifactory可以识别它自己的类型,如果您的远程存储库的URL指向Artifactory的另一个实例,那么您将看到一个对话框,您可以在该对话框上配置这两个实例如何交互。
- 同步性能
通常,一旦您缓存了来自远程存储库的工件,您将不会知道在远程资源上注释工件的任何属性是否被更改。但随着智能远程存储库你可以。如果您在远程存储库配置中选中此框,那么每当有获取工件属性的请求时,Artifactory将根据远程实例中原始工件上的相应属性验证它们的值。对远程项目属性的任何更改(更新、添加、删除)都将自动同步到本地缓存的副本,而无需再次下载工件。因此,例如,如果您下载了一个状态为“Release Candidate”的工件,并且构建它的远程团队稍后将其状态更改为“Integration Test Failed”,那么您的本地缓存副本上的状态将在下次您检查是否可以使用该工件时自动更新。您不希望发布一个集成测试失败的工件,对吗? - 远程列表浏览,你从来没有想过可能
Artifactory中支持的许多包类型由于各种原因不提供列表浏览,然而,由于智能远程存储库将内容保存在家族中,Artifactory知道如何克服这一限制,并让您在您一直想要但无法远程浏览的地方远程浏览,例如Docker, NuGet, npm, Bower, PyPI等等。 - 删除提示
这是从盒子里拿出来的。无需配置。如果您已经下载并缓存的项从远程Artifactory实例中删除,您的Artifactory UI将在查看本地缓存副本的不同位置指示它。这是您需要了解的内容,因为如果您依赖于此工件,您不会希望在下次清理缓存时丢失它。您将不能再从远程Artifactory实例下载工件,因此您可能希望将其移动到本地存储库以确保安全。
这仅仅是个开始。您可以期待下载统计数据同步、链接多个Artifactory实例时的传递性同步、执行等特性AQL搜索在远程存储库上,远程推送工件以及智能远程存储库会变得越来越智能。

