Pod 私有倉庫構建
- 創建`私有倉庫索引庫`(iOS)
- 添加`私有倉庫索引庫`到本地repo管理
- 創建自己的`組建庫工程
- 上傳`組建庫工程`到`私有倉庫索引庫`
- App工程調用`組建庫工程`
目的
私有庫管理,是用來簡化代碼工程結構,實現代碼復用和工程管理的方案, 幾乎每個公司都有自己的私有倉庫進行組件化管理工程。
1. 創建`私有倉庫索引庫`
描述
- 私有倉庫索引庫`是管理各個組件庫版本用的。 我們這里可以理解為一個空的git 倉庫,以下可以把名字區分開理解
- 私有庫:指的是我們真正放置組件代碼的地方。
- 索引庫:存放spec文件的地方,用於索引到代碼的位置。
打個比方,索引庫就好比指針,私有庫就好比對象,指針中存放了對象的地址,通過地址可以找到對象!(可以管理任意個組件倉庫)
創建
隨意在自己的gitlab 或者github上創建一個空的倉庫即可,如我在自己案例中倉庫地址為:
https://gitlab.rokid-inc.com/kingbo/iOS.git
2. 添加`私有倉庫索引庫`到本地repo管理
1.cocoapods本地倉庫路徑
~/.cocoapods/repos
2.在本地添加一個自己的遠程索引庫
//備注這里倉庫名字和git上名字保持一致(不一致好像最后會找不到私庫,如下:iOS 為倉庫名字)
pod repo add iOS https://gitlab.rokid-inc.com/kingbo/iOS.git
此時目錄結構如下:
. └── repos ├── master └── iOS //這個就是我們自己的本地映射倉庫了
其實這里私有倉庫已經和我們的gitlab建立了 關系,在后面添加組件時,會直接push到我們的git倉庫
3. 創建自己的`組建庫工程`
這里的組建可以是任意的庫,以下為測試准備,所以我准備名字為:`RokidToolsKitTest`
3.1 gitlab 倉庫名字構建
在gitlab 上面創建一個 `RokidToolsKitTest` 倉庫,我這里的地址如下:
https://gitlab.rokid-inc.com/lingbo.jin/RokidToolsKitTest.git
遠程代碼clone 到本地就不用說了
3.2 gitignore 文件創建
另外,我們需要注意的是,由於組件工程中不需要管理pod文件里面的東西,因此需要創建一個名為`.gitignore`的隱藏文件,在這個倉庫的跟目錄下面(隱藏文件)
3.3 CHANGELOG.md 文件創建 (可以忽略)
由於組件工程中也涉及到版本管理,所以這個文件是對每個組件進行迭代改動的功能記錄
3.4 pod 命令本地創建pod工程
pod lib create RokidToolsKitTest
執行上面命令行,然后根據具體情況選擇對話框,最后會給我們創建一個組件工程(包括`podspec`文件里面有很多配置,這里就不一一寫了)
3.5 關聯本地倉庫和遠程倉庫的鏈接
git remote add origin https://gitlab.rokid-inc.com/lingbo.jin/RokidToolsKitTest.git
(寫完自己的代碼,最后直接提交到gitlab 倉庫好了,業務邏輯不一一寫了)
3.6 更改podspec文件信息
開發完成之后需要創建podspec 文件 ,格式如下:
Pod::Spec.new do |s| s.name = 'RokidToolsKitTest' s.version = '0.1.0' s.summary = 'RokidToolsKitTest' s.swift_version = '4.0' # 我這里是swift 驗證的時候不寫會提示錯誤 s.description = <<-DESC 這里是描述信息,由我們自己去寫具體的組建業務 DESC s.homepage = 'https://gitlab.rokid-inc.com/lingbo.jin/RokidToolsKitTest' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'jinlingbo' => 'lingbo.jin@rokid.com' } s.source = { :git => 'https://gitlab.rokid-inc.com/lingbo.jin/RokidToolsKitTest.git', :tag => s.version.to_s } s.ios.deployment_target = '8.0' s.source_files = 'RokidToolsKitTest/Classes/**/*' end
4. 上傳`組建庫工程`到`私有倉庫索引庫`
開發完成之后需要為我們自己的lib 倉庫進行發布,具體以下幾個流程
4.1 驗證spec文件
其實在我們制作完成自己庫之后,需要驗證自己的庫是否編譯通過,因此在提交之前需要驗證下
# cd 到當前跟目錄 和podspec 文件保持同一個目錄 pod lib lint --private //如果有多個文件源,比如自己的私有庫地址時, 可以添加--source ,如下 pod lib lint --private --sources=https://github.com/CocoaPods/Specs.git,https://gitlab.rokid-inc.com/kingbo/iOS.git
4.2 給版本打一個分支
驗證通過之后,需要給tag 打一個版本
此處的0.1.0版本號要與spec文件的保持一致 $ git tag 0.1.0 $ git push --tags
### 4.3 進行發布當前版本
//執行上傳到私有倉庫,在第2步中,我們已經關聯了 `iOS` 這個倉庫的地址,所以這里push之后會直接push到我們的git倉庫之中
pod repo push iOS RokidToolsKitTest.podspec
5、App工程調用`組建庫工程`
如果一切順利就可以直接調用 組建了,使用方法和其他庫使用一樣
source 'https://github.com/CocoaPods/Specs.git' source 'https://gitlab.rokid-inc.com/kingbo/iOS.git' #記得在工程中添加自己的私有倉庫索引 target 'RokidToolsKitTest_Example' do pod 'RokidToolsKitTest','0.1.0' pod 'SVProgressHUD', '~> 2.2.5' target 'RokidToolsKitTest_Tests' do inherit! :search_paths end end
總結
到這里,大致的私有倉庫流程就已經完成 , 接下來我們思考的是如何去解決,將私有庫打包成framework 然后對外開放問題。。。。這個話題后續繼續。
[參考資料]
http://www.cocoachina.com/ios/20180511/23359.html