您的远程存储库有多智能?

注:本文更新于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中的存储库,那么这些表兄弟实例没有理由不能相互通信并做一些聪明的事情。

  1. 自动检测
    因此,第一件事是Artifactory识别它自己的类型,如果您的远程存储库的URL指向Artifactory的另一个实例,您将看到一个对话框,在这个对话框中您可以配置这两个实例将如何交互。
    SmartRemoteRepoPopup1
  2. 同步性能
    通常,一旦您从远程存储库缓存了工件,您将不知道在远程资源上注释工件的任何属性是否被更改了。但随着智能远程存储库你可以。如果您在远程存储库配置中选中此框,那么每当有获取工件属性的请求时,Artifactory将根据远程实例中原始工件上的相应属性验证它们的值。对远程项目属性的任何更改(更新、添加、删除)将自动同步到本地缓存副本,而无需再次下载工件。因此,举例来说,如果您下载了一个状态为“Release Candidate”的工件,并且远程团队稍后将其状态更改为“Integration Test Failed”,那么下次您检查是否可以使用该工件时,本地缓存副本上的状态将自动更新。现在,您不想发布一个集成测试失败的工件,是吗?
  3. 远程列表浏览,你从来没有想过可能
    Artifactory中支持的许多包类型由于各种原因不提供列表浏览,然而,由于智能远程存储库保留了一些东西,Artifactory知道如何克服这一限制,并允许您在您一直想要但不能的地方远程浏览,例如Docker, NuGet, npm, Bower, PyPI等等。
  4. 删除提示
    这是从盒子里拿出来的。不需要配置。如果您下载并缓存的项目从远程Artifactory实例中删除,您的Artifactory UI将在您查看本地缓存副本的不同位置指出它。这是您需要了解的,因为如果您依赖于这个工件,您不希望在下次对缓存进行清理时丢失它。您将无法再从远程Artifactory实例下载工件,因此您可能希望将其移动到本地存储库中以确保安全。

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