Artifactory Cocoapods 缓存
Artifactory Cocoapods caching
在我们公司,我们在代理后面工作。这就是为什么我们将 Artifactory 纳入我们的工具链的原因之一。
一切看起来都不错,远程存储库已经下载了 master.tar.gz 和所有 podspecs 并更改了 podspecs 中的源代码-URLs到 Artifactory URL 从现在开始应该加载它们的地方。但是问题开始了:
- URL 仅针对 "git" 个来源更改,只要来源是 "http",来源就不会更改。我们遇到此问题的示例是 "GoogleMaps" pod。
- 如上所述,我们在代理后面,安装此 pod "GoogleMaps" 无法正常工作,因为我们无法绕过代理。
- 即使我们可以这样做一次,我希望 Artifactory 缓存 pod,就像其他 pods 一样。这将解决问题,但不会完全解决问题,但至少从现在开始,开发人员可以访问缓存版本。但是 "http" 源没有被缓存,我不知道为什么。
屏幕截图显示了其他使用的 pods 是如何缓存的,但不是 GoogleMaps 的。
所以如果有人遇到同样的问题,甚至可能解决了它,如果你能帮助我,那就太棒了。
这里的问题实际上不是 'git' urls 与 'http' urls,因为 Artifactory 知道在提供索引时如何处理这两个问题。
它的工作方式是 Artifactory 实际上在它返回给客户端的索引中重写 urls 以指向您的实例,该实例将依次下载、缓存和服务 pods给客户 - 你可以在客户在你的 mac 上创建的本地索引回购中看到这个(通常在 ~/.cocoapods/repos/<repo_name>
您有一个指向 github.com
的 remote repo,因此 Artifactory 仅替换这些 url(http:// 或 git://,它不会matter) - 原因是远程端点是 github.com
并且它只能查询下载请求。
例如,在您的情况下,Google Maps pod 的下载 url 指向 https://dl.google.com/geosdk/googlemaps-ios-1.0.1.zip
,因此 Artifactory 不会尝试更改 url,因为它不会指向 github.
我想您真正要寻找的是一种类似于我们对 Bower 所做的机制 dependency re-write - but this functionallity is not yet available for Cocoapods
. You are more than welcome to submit a feature request for it though, you can do it in our support portal。
作为解决方法,我建议您手动下载构建所需的任何内容 pods(我猜这是一个有限列表),将它们部署到本地 cocoapods 存储库(或将您已经拥有的那些从远程缓存存储库复制到本地),并将您的客户端指向它。
它将能够提供所需的 pods,就像您从远程仓库中获取它们一样。
在我们公司,我们在代理后面工作。这就是为什么我们将 Artifactory 纳入我们的工具链的原因之一。
一切看起来都不错,远程存储库已经下载了 master.tar.gz 和所有 podspecs 并更改了 podspecs 中的源代码-URLs到 Artifactory URL 从现在开始应该加载它们的地方。但是问题开始了:
- URL 仅针对 "git" 个来源更改,只要来源是 "http",来源就不会更改。我们遇到此问题的示例是 "GoogleMaps" pod。
- 如上所述,我们在代理后面,安装此 pod "GoogleMaps" 无法正常工作,因为我们无法绕过代理。
- 即使我们可以这样做一次,我希望 Artifactory 缓存 pod,就像其他 pods 一样。这将解决问题,但不会完全解决问题,但至少从现在开始,开发人员可以访问缓存版本。但是 "http" 源没有被缓存,我不知道为什么。
屏幕截图显示了其他使用的 pods 是如何缓存的,但不是 GoogleMaps 的。
所以如果有人遇到同样的问题,甚至可能解决了它,如果你能帮助我,那就太棒了。
这里的问题实际上不是 'git' urls 与 'http' urls,因为 Artifactory 知道在提供索引时如何处理这两个问题。
它的工作方式是 Artifactory 实际上在它返回给客户端的索引中重写 urls 以指向您的实例,该实例将依次下载、缓存和服务 pods给客户 - 你可以在客户在你的 mac 上创建的本地索引回购中看到这个(通常在 ~/.cocoapods/repos/<repo_name>
您有一个指向 github.com
的 remote repo,因此 Artifactory 仅替换这些 url(http:// 或 git://,它不会matter) - 原因是远程端点是 github.com
并且它只能查询下载请求。
例如,在您的情况下,Google Maps pod 的下载 url 指向 https://dl.google.com/geosdk/googlemaps-ios-1.0.1.zip
,因此 Artifactory 不会尝试更改 url,因为它不会指向 github.
我想您真正要寻找的是一种类似于我们对 Bower 所做的机制 dependency re-write - but this functionallity is not yet available for Cocoapods
. You are more than welcome to submit a feature request for it though, you can do it in our support portal。
作为解决方法,我建议您手动下载构建所需的任何内容 pods(我猜这是一个有限列表),将它们部署到本地 cocoapods 存储库(或将您已经拥有的那些从远程缓存存储库复制到本地),并将您的客户端指向它。
它将能够提供所需的 pods,就像您从远程仓库中获取它们一样。