Artifactory Cocoapods缓存

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

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

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

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

Artifactory缓存

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

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

你有一个指向github.com的远程 github.com所以Artifactory只替换这些url(http://或git://,没关系) – 原因是远程端点是github.com而且它只能查询它用于下载请求。

在您的情况下,Google地图广告的下载url指向https://dl.google.com/geosdk/googlemaps-ios-1.0.1.zip ,因此Artifactory不会尝试更改url,因为它没有指向到github。

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

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