2016-12-15 81 views
4

在我們公司,我們的工作背後是一個代理。這就是爲什麼我們將Artifactory加入到我們的工具鏈中的原因之一。Artifactory Cocoapods緩存

一切似乎都很不錯,遠程存儲庫已經下載了master.tar.gz和所有podspecs,並將podspecs中的源URL改爲Artifactory URL,從現在開始它們應該被加載。但問題出現了:

  1. 只有源爲「http」時,URL纔會更改爲「git」源,源未更改。我們遇到這個問題的例子是「GoogleMaps」窗格。
  2. 如上所述,我們在代理之後,並且此窗格「GoogleMaps」的安裝不起作用,因爲我們無法繞過代理服務器。
  3. 即使我們可以這樣做一次,我也會期待Artifactory緩存吊艙,就像它與其他吊艙一樣。這可以解決問題,但不完全,但至少從現在起,開發人員可以訪問緩存版本。但「http」源不會被緩存,我不知道爲什麼。

該屏幕截圖顯示了其他使用過的pod是如何緩存的,但不是GoogleMaps的。

Artifactory Cache

因此,如果有人經歷了同樣的問題,甚至解決了這個問題,這將是驚人的,如果你能幫助我。

回答

7

這裏的問題實際上不是'git'urls與'http'urls,因爲Artifactory知道如何在提供索引時處理兩者。 它的工作方式是,Artifactory實際上會重新編寫索引中的URL,並將其返回給客戶端,以指向您的實例,然後將實例下載,緩存並將客戶端提供給客戶端 - 您可以看到在本地索引回購客戶端創建在Mac上(通常在~/.cocoapods/repos/<repo_name>

你有remote repo指向github.com只有這麼artifactory的替換這些網址(http://或混帳://,沒關係) - 原因是遠程的端點是github.com,它只能查詢它的下載請求。

就你的情況而言,Google Maps窗格的下載URL指向https://dl.google.com/geosdk/googlemaps-ios-1.0.1.zip例如,so Artifactory不會嘗試更改網址,因爲它不指向github。

我想你真正想要的是一種類似於我們用Bower的dependency re-write做的機制 - 但是Cocoapods這個功能尚未可用。不過,歡迎您提交功能請求,但您可以在我們的support portal中完成。

作爲一種解決方法,我建議您手動下載您的構建所需的任何pod(我猜這是一個有限的列表)將它們部署到本地cocoapods存儲庫(或複製已從遠程存儲的那些存儲庫緩存存儲庫到本地),並指出你的客戶。
它將能夠提供所需的豆莢,就像您從遠程回購獲得它們一樣。

+0

嘿fundelman,謝謝。我看到了網址的重寫,這是我預期的方式,但找不到官方文檔。關於我在本地倉庫中的複製:我已經在想這件事了,但是因爲遠程cocoapods倉庫中的白名單不適用於我,請參閱[link](http:// stackoverflow。com/questions/41180460/artifactory-cocoapods-include-white-list),這會導致重複的豆莢。因此,只要我們解決白名單上的問題,這是工作只是完美的:) – choli

+0

@choli - 回答你的其他問題,以及好運:) – danf

+0

嗨@choli:是否有一個關於「Cocoapods依賴項重寫支持「來投票/宣傳它(我沒有在[RTFACT](https://www.jfrog.com/jira/browse/RTFACT)中找到它)?使用一些常見的Google組件(如_GoogleMaps_,_GoogleSignIn_,...),此功能將非常有用。非常感謝 –