Artifactory Cocoapods缓存

cho*_*oli 4 artifactory ios cocoapods

在我们公司,我们在代理背后工作.这就是为什么我们将Artifactory放入我们的工具链的原因之一.

一切看起来都很好,远程存储库已经下载了包含所有podspecs的master.tar.gz,并将podspecs中的source-URLs更改为Artifactory URL,它们应该从现在开始加载.但是问题就出现了:

  1. 仅对"git"源更改URL,只要源为"http",源不会更改.我们遇到此问题的示例是"GoogleMaps"窗格.
  2. 如上所述,我们在代理服务器后面,并且这个pod"GoogleMaps"的安装无法正常工作,因为我们无法绕过代理服务器.
  3. 即使我们可以做到这一次,我也希望Artifactory能够缓存pod,就像它对其他pod一样.这将解决问题,而不是完全解决,但至少从现在开始,开发人员可以访问缓存版本.但是"http"源不会被缓存,我不知道为什么.

屏幕截图显示了其他已使用的pod如何缓存,而不是GoogleMaps缓存.

Artifactory缓存

因此,如果有人遇到同样的问题,甚至可能解决了问题,那么如果你能帮助我,这将是惊人的.

dan*_*anf 7

这里的问题实际上不是'git'网址与'http'网址,因为Artifactory知道如何在提供索引时处理这两个问题.它的工作方式是,Artifactory实际上会在它返回给客户端的索引中重新写入url以指向您的实例,然后将实例下载,缓存并将pod提供回客户端 - 您可以在客户端在您的mac上创建的本地索引repo(通常在~/.cocoapods/repos/<repo_name>

你有一个指向远程仓库,github.com因此Artifactory只替换这些URL(http://或git://,无关紧要) - 原因是远程端点是github.com,它只能查询下载请求.

在您的情况下,Google Maps pod的下载URL指向https://dl.google.com/geosdk/googlemaps-ios-1.0.1.zip例如,因此Artifactory不会尝试更改URL,因为它不指向github.

我猜你真正想要的是一种类似于我们对Bower的依赖重写的机制 - 但是这个功能尚不可用Cocoapods.我们非常欢迎您提交功能请求,您可以在我们的支持门户网站上进行.

作为一种解决方法,我建议您手动下载构建所需的任何pod(我猜它是一个有限的列表)将它们部署到本地cocoapods存储库(或将已经存在的那些从远程缓存存储库复制到本地的),并指出你的客户.
它将能够提供所需的pod,就像从远程仓库获得它们一样.