Artifactory 搭建 CocoaPod 私服-踩坑記錄

前言

雖然網(wǎng)上有不少Artifactory 搭建CocoaPod私服的文章芦鳍,但不少文章都缺少步驟嚷往,包括官方的文檔(官方鏈接請見文章結(jié)尾),導致服務(wù)端配置好怜校,本機鏈接配置间影、上傳、獲取等操作不成功茄茁;或者本機部署JFrog Artifactory服務(wù)魂贬,配置、上傳裙顽、獲取也有一些采坑的地方付燥;經(jīng)與JFrog Artifactory 官方技術(shù)人員兩天的調(diào)試,終于本機部署調(diào)試成功愈犹,公司測試服務(wù)器部署bug解決键科,故此記錄部署過程闻丑,也一并記錄踩過的坑,讓新入手的同學避免再次入坑勋颖。

痛點


痛點

目前的 CocoaPod 私服嗦嗡,很多公司使用 Git 倉庫進行搭建,這導致的問題是饭玲,CocoaPod 的構(gòu)建產(chǎn)出物通常較大侥祭,上傳到 Git 倉庫時,會導致 Git? 倉庫持續(xù)增大茄厘, Git Clone 的速度大大降低矮冬,進而導致軟件部署,交付的時間變長次哈,影響了研發(fā)上線的效率胎署。

?不僅如此,您可能還需要為安卓的開發(fā)者搭建 Gradle 倉庫窑滞,Java 開發(fā)者搭建 Maven 私服琼牧,容器團隊搭建 Docker 私服,各個私服獨立維護葛假,占用大量系統(tǒng)資源障陶,維護成本呈幾何指數(shù)增長。


Artifactory管理

JFrog Artifactory 能夠解決這個問題聊训,通過搭建 Artifactory,能夠在內(nèi)網(wǎng)建立統(tǒng)一全語言的私有制品倉庫恢氯,支持 CocoaPod带斑,Gradle,Maven勋拟,Docker 等等勋磕。程序員通過 Artifactory 可以實現(xiàn)全語言的依賴下載,并且可以將構(gòu)建產(chǎn)出物上傳到 Artifactory 進行管理敢靡。

一挂滓、選擇并創(chuàng)建私服類型,創(chuàng)建入口有兩個:

?創(chuàng)建入口一:

?創(chuàng)建入口一:

創(chuàng)建入口二:

創(chuàng)建入口二:

建議選擇第二重啸胧,因為第一種一種類型只能創(chuàng)建一個赶站,第二種,例如local私服纺念,可以創(chuàng)建多個

二贝椿、cocoapod-local庫的創(chuàng)建

cocoapod-local庫的創(chuàng)建
cocoapod-local庫的選擇
cocoapod-local庫的選擇2

創(chuàng)建完成后,打開并進入設(shè)置頁面

打開并進入設(shè)置頁面
進入設(shè)置頁面

輸入密碼后的頁面:

輸入密碼后的頁面:
輸入密碼后的頁面2

三陷谱、接下來進入正題烙博,Cocoapod-local 私服的配置、使用、注意點

1渣窜、執(zhí)行下面命令铺根,安裝 cocoapod-art 插件

gem install cocoapods-art

2、?打開/Users/用戶名/下的.netrc文件(.netrc文件默認是隱藏文件)乔宿,將彈框中的內(nèi)容復制添加得到.netrc文件中夷都,

machine 127.0.0.1

login admin

password AKCp5fTjaZcUbhrRdJ1TYdf6xADy2qzmiZBRxokDBD5hhhr6RcWmYj9eZiUWRr2YvPwdBcYQj

坑:一定要用命令行,直接用文本編輯打開予颤,復制粘貼進去囤官,pod install的時候會一直提示 401權(quán)限錯誤,沒有得到授權(quán)蛤虐,但雙擊用文本編輯打開党饮,授權(quán)也寫了,未起作用驳庭。

vim .netrc

在命令行中刪除已有并粘貼進去刑顺。

3、執(zhí)行下面命令饲常,等待完成提示出現(xiàn)“Successfully added repo cocoapods-remote”蹲堂。

pod repo-art add cocoapods-local "http://127.0.0.1:8081/artifactory/api/pods/cocoapods-local"

4、使用下面命令壓縮pod包贝淤,pod包中包含 項目代碼 or framework柒竞、boundle,以及.podspec or .podspec.json:

COPYFILE_DISABLE=1 tar czvf 壓縮后名稱.tar.gz 待壓縮文件名稱

例如:COPYFILE_DISABLE=1 tar czvf DSCommontEnum-0.1.5.tar.gz DSCommontEnum

.podspec文件示例:

# Be sure to run `pod lib lint DSCommontEnum.podspec' to ensure this is a

# valid spec before submitting.

#

# Any lines starting with a # are optional, but their use is encouraged

# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html

#

Pod::Spec.new do |s|

? s.name? ? ? ? ? ? = 'DSCommontEnum'

? s.version? ? ? ? ? = '0.1.5'

? s.summary? ? ? ? ? = '道上枚舉'

# This description is used to generate tags and improve search results.

#? * Think: What does it do? Why did you write it? What is the focus?

#? * Try to keep it short, snappy and to the point.

#? * Write the description between the DESC delimiters below.

#? * Finally, don't worry about the indent, CocoaPods strips it!

? s.description? ? ? = <<-DESC

公共的枚舉庫

? ? ? ? ? ? ? ? ? ? ? DESC

? s.homepage? ? ? ? = 'http://10.20.7.105/Component-based/DSCommontEnum'

? # s.screenshots? ? = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'

? s.license? ? ? ? ? = { :type => 'MIT', :file => 'LICENSE' }

? s.author? ? ? ? ? = { 'vvex' => 'zhoutianyu@lionbridgecapital.cn' }

? # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

? s.ios.deployment_target = '8.0'

? s.source_files = 'DSCommontEnum/Classes/**/*.h'


? #s.dependency 'DSVersionUpdate','0.1.5'

? #s.dependency 'AFNetworking','4.0.0'

end

引用庫必須是local私服或者Remote私服已有的庫播聪,必須是引用外部庫示例:

s.dependency 'DSVersionUpdate','0.1.5'

s.dependency 'AFNetworking','4.0.0'

5朽基、使用下面的Artifactory's REST API將 壓縮后名稱.tar.gz 上傳到Local 倉庫。

curl -H 'X-JFrog-Art-Api:' -XPUThttp://127.0.0.1:8081/artifactory/cocoapods-local-new/<TARGET_FILE_PATH> -T

例如:

curl -H 'X-JFrog-Art-Api:AKCp5ekmsg8hGmnUEXxvAqWNL6MERyoiTLGdjprYhxr3jTkiLE1DE7BHmi7VJ1M5Vequ8KVcs' -XPUThttp://127.0.0.1:8081/artifactory/pods-local/DSCommontEnum/0.1.2/-T /Users/shiqiao/Desktop/test/DSCommontEnum-0.1.2.tar.gz

上傳成功截圖:


上傳成功截圖

返回Artifactory平臺离陶,刷新查看已上傳Local私服 私有庫信息

查看已上傳Local私服 私有庫信息

6稼虎、將 Podfile 中添加該源作為 pod 的依賴解析源。

platform:ios,'8.0'inhibit_all_warnings!#use_frameworks!plugin'cocoapods-art',:sources=>[# 指定local倉庫

? 'cocoapods-local-new'

]target'項目名稱'do# 指定pod內(nèi)容 與 版本號pod'壓縮后名稱','0.0.1'end

7招刨、執(zhí)行 pod repo-art update?cocoapods-local-new 更新本地索引信息霎俩,否則直接執(zhí)行pod install會提示找不到引用庫

8、執(zhí)行: pod install

四沉眶、cocoapod-remote庫的創(chuàng)建

創(chuàng)建1
創(chuàng)建2
創(chuàng)建3
創(chuàng)建4

五打却、Remote 倉庫使用

Remote倉庫配置
設(shè)置頁面

1、執(zhí)行下面命令沦寂,安裝 cocoapod-art 插件,在 Local 倉庫使用過程已經(jīng)執(zhí)行学密,不需要再次執(zhí)行

gem install cocoapods-art

2、?打開/Users/用戶名/下的.netrc文件(.netrc文件默認是隱藏文件)传藏,將彈框中的內(nèi)容復制添加得到.netrc文件中;在 Local 倉庫使用過程已經(jīng)執(zhí)行腻暮,不需要再次執(zhí)行

machine 127.0.0.1

login admin

password AKCp5fTjaZcUbhrRdJ1TYdf6xADy2qzmiZBRxokDBD5hhhr6RcWmYj9eZiUWRr2YvPwdBcYQj

3彤守、執(zhí)行下面命令,等待完成提示出現(xiàn)“Successfully added repo cocoapods-remote-news”哭靖。

pod repo-art add cocoapods-remote-news "http://127.0.0.1:8081/artifactory/api/pods/cocoapods-remote-news"

注意:這條命令建立索引具垫,比較耗時間,經(jīng)測試至少需要40分鐘以上试幽,需要同步JFrog索引信息如筝蚕,果瞬間執(zhí)行完畢,肯定是有問題的铺坞;

這條命令建立索引起宽,比較耗時間

4、將 Podfile 中添加該源作為 pod 的依賴解析源:

platform:ios,'8.0'inhibit_all_warnings!#use_frameworks!plugin'cocoapods-art',:sources=>['cocoapods-remote-news']target'testProject'dopod'AFNetworking','~> 3.1.0'end

5济榨、執(zhí)行:pod install 或者 執(zhí)行不升級CocoaPods的spec倉庫的方式坯沪。

pod install --verbose --no-repo-update

6、可以看到依賴已經(jīng)被緩存在遠程倉庫

可以看到依賴已經(jīng)被緩存在遠程倉庫

六擒滑、Local 和 Remote庫同時使用

將 Podfile 中添加該源作為 pod 的依賴解析源:

platform:ios,'8.0'inhibit_all_warnings!#use_frameworks!plugin'cocoapods-art',:sources=>['cocoapods-local-new',

'cocoapods-remote-news']target'testProject'dopod'AFNetworking','~> 3.1.0'end

注:如果local庫中有依賴 remote中某個庫腐晾,需要引入 'cocoapods-remote-news',否則pod install 會不成功丐一。

七藻糖、注意事項

1、Local倉庫使用库车,將tar.gz上傳到Local倉庫后巨柒,需要注意查看Local倉庫tar.gz下,是否包含.DS_Store or ._.DS_Stroe or ._xxxxx等隱藏文件凝颇。

.DS_Store是Mac系統(tǒng)保存文件夾自定義屬性的隱藏文件,

._xxxxx是壓縮過程中出現(xiàn)的

如果包含上述文件潘拱,會導致pod install失敗。

如果包含上述文件拧略,會導致pod install失敗。

解決辦法:1瘪弓、在linux系統(tǒng)下壓縮為tar.gz垫蛆,應該沒有此問題2、在Windows系統(tǒng)下腺怯,使用7-zip工具壓縮為tar.gz3袱饭、在Mac系統(tǒng)下:(1)刪除.DS_Store// 刪除當前文件及子文件夾中的.DS_Store文件find.-name'*.DS_Store'-typef-delete(2)壓縮COPYFILE_DISABLE=1tar czvf 壓縮后名稱.tar.gz 待壓縮文件名稱

2、podspec文件的編寫與cocoapods + git的規(guī)范完全一致呛占。Podspec Syntax Reference

(1)只需要修改homepage部分虑乖,改為四、Local 倉庫使用中晾虑,第5步疹味,-XPUT與-T之間的地址仅叫。

(2)source可以仍為之前cocoapods + git建立私庫的地址,podspec上傳到local倉庫后糙捺,Artifactory會將source內(nèi)容轉(zhuǎn)換成他們自己的地址诫咱。(注:經(jīng)測試source不填寫git地址也是可以的,如:spec.source = { :git => "", :tag => "#{spec.version}" })

3洪灯、向Local 倉庫上傳新版本后坎缭,需要先執(zhí)行下面命令,再執(zhí)行pod install來pod新版本签钩。

pod repo-art update local倉庫名稱

簡單總結(jié):cocoapod-local私服就是團隊自己封裝的私有庫掏呼;cocoapod-remote私服就是 github上的開源三方庫。

參考鏈接:

使用Artifactory 1分鐘搭建 CocoaPod 私服 :https://blog.csdn.net/wangqingjiewa/article/details/85921419

使用 Artifactory 搭建 CocoaPod 私服:http://www.reibang.com/p/c06962f56ca8

JFrog 官方鏈接:https://www.jfrog.com/confluence/display/JFROG/CocoaPods+Repositories

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铅檩,一起剝皮案震驚了整個濱河市憎夷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柠并,老刑警劉巖岭接,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異臼予,居然都是意外死亡鸣戴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門粘拾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窄锅,“玉大人,你說我怎么就攤上這事缰雇∪胪担” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵械哟,是天一觀的道長疏之。 經(jīng)常有香客問我,道長暇咆,這世上最難降的妖魔是什么锋爪? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮爸业,結(jié)果婚禮上其骄,老公的妹妹穿的比我還像新娘俱饿。我一直安慰自己申屹,他們只是感情好氓鄙,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布家肯。 她就那樣靜靜地躺著涩堤,像睡著了一般油够。 火紅的嫁衣襯著肌膚如雪瘟则。 梳的紋絲不亂的頭發(fā)上肃弟,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音否副,去河邊找鬼汉矿。 笑死,一個胖子當著我的面吹牛备禀,可吹牛的內(nèi)容都是我干的洲拇。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼曲尸,長吁一口氣:“原來是場噩夢啊……” “哼赋续!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起另患,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤纽乱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后昆箕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸦列,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年鹏倘,在試婚紗的時候發(fā)現(xiàn)自己被綠了薯嗤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡纤泵,死狀恐怖骆姐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情捏题,我是刑警寧澤玻褪,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站公荧,受9級特大地震影響带射,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜循狰,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一庸诱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晤揣,春花似錦、人聲如沸朱灿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盗扒。三九已至跪楞,卻和暖如春缀去,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甸祭。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工缕碎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人池户。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓咏雌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親校焦。 傳聞我的和親對象是個殘疾皇子赊抖,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容