1. 程式人生 > >如何在gitLib 下建立私有 CocoaPods 倉庫

如何在gitLib 下建立私有 CocoaPods 倉庫

1,概述

   CocoaPods是iOS,Mac下優秀的第三方包管理工具,給我們專案管理帶來了極大的方便。個人或公司在開發過程中,會積累很多可以複用的程式碼包,有些我們不想開源,又想像開源庫一樣在CocoaPods中管理它們,那麼通過gitLib建立私有倉庫來管理程式碼就很必要。對於CocoaPods還不太熟悉的,建議參考一下唐巧的部落格

2,概念

1.code repository是程式碼倉庫,我們把包程式碼上傳到這個倉庫。

2.spec repository是配置倉庫,所有的配置按照包名、版本號分門別類的存放在這個倉庫。這個倉庫只用來存放.Podspec檔案,不存放程式碼。

3,實現步驟

建立私有的CocoaPods倉庫之前需要先製作CocoaPods依賴庫,所以步驟分兩步:

1.製作CocoaPods依賴庫,也就是程式碼庫。

2.建立私有 CocoaPods 倉庫。

1.建立並設定一個私有的code Repository。

       我使用的是自己搭建的gitlab 伺服器提供git服務,gitHub也可以但是如果你不開源的話是要收費的。

2.clone 倉庫到本地

       為了方便向倉庫中刪減內容,需要將倉庫 clone 到本地,這裡有多種操作方式,可以選擇你喜歡的一種,但是為了方便這邊選擇使用命令列。首先需要切換到你想在本地儲存的目錄,然後再 clone :
git clone http://git.yourUrl/yourAccount/CTMediator.git
這時候,庫是空的只有個空資料夾,下面建立好你自己的庫檔案,必要的檔案有.podspec、LICENSE、README.md以及程式碼檔案,特別說明一下“.podspec”檔案的格式需要嚴格遵循要求

1)建立 podspec檔案
 我們使用以下命令建立“.podspec”檔案:

pod spec create CTMediator

以下是我建立的檔案內容

Pod::Spec.new do |s|
  s.name         = "CTMediator"
  s.version      = "1.0"
  s.summary      = "A short description of caculatormaker."
  s.description  = <<-DESC
			    Testing Private Podspec.
                   DESC

  s.homepage     = "http://git.yourUrl/yourAccount/CTMediator.git"
 
  # ―――  Spec License  ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #

  s.license     = { :type => 'MIT', :file => 'LICENSE' }  #建議拷貝git上的MIT License
 

  s.author             = { "x32sky" => "
[email protected]
" } s.source = { :git => "http://git.yourUrl/yourAccount/CTMediator.git", :tag => "#{s.version}" } s.ios.deployment_target = '8.0' s.source_files = 'CTMediator/CTMediator/*.{h,m,plist}' #這裡的路徑要寫對 s.platform = :ios s.requires_arc = true  s.subspec 'DM' do |ss| #需要group的時候這樣搞,比如工程裡有個DM資料夾     ss.source_files =  'LogCenter/LogCenter/DM/*.{h,m,mm}' end end

  3).README.md

           使用 github 的人應該都熟悉這個檔案,它使一個成功的 github 倉庫必不可少的一部分,使用 markdown 對倉庫進行詳細說明。

 4).LICENSE 檔案

          CocoaPods 強制要求所有的 Pods 依賴庫都必須有 license 檔案,否則驗證不會通過。 license 檔案有很多中,詳情可以參考 tldrlegal。前面我們已經選擇建立了一個 MIT 型別的 license。建議隨意拷貝一個別人的就好,大家的license都一樣。

4.提交修改到code Repository

經過前面步驟,我們已將在本地的 git 倉庫添加了不少檔案,現在我們只要將他們提交到 gitlab上就可以。在此之前我們需要對剛才新增的 pod 進行一下驗證:
pod lib lint --allow-warnings

成功會顯示,如果你寫的很不錯是不會有 WARN的

驗證成功之後,我們只要把程式碼提交到 gitlab 倉庫,就可以了,參考命令:

    git add -A && git commit -m "add pod files"

    git push origin master

這時候需要在gitLib上建一個Tag 版本命名為1.0(和你的podspec檔案裡版本號寫的一樣)

五、建立私有 CocoaPods 倉庫

1.建立並設定一個私有的Spec Repository。

我們在github上建立一個空的倉庫,命名為CTMSpecs,這個倉庫是用來存放我們自己所有的私有庫的spec檔案

 pod repo add CTMSpecs  http://git.jufan.tv/yourAccount/CTMSpecs.git
命令完成後~/cocopods 下會多出一個資料夾CTMSpecs
CTMSpecs

如圖:


這個.cocoapod資料夾是cocoapod重要的配置資料夾,是隱藏的,關於如何MAC如何顯示隱藏資料夾請自行百度。

接下來的非常關鍵,這一步會將CTMediator.podspec檔案從git上下載到上圖的CTMSpecs資料夾裡

 pod repo push CTMSpecs CTMediator.podspec --allow-warnings
我這邊命令列印如下


和以上命令差不多就成功了,成功後.cocoapods檔案如下



這時候其實已經成功了

使用命令可以查到這個私有庫

pod search  CTMediator

這時候新建一個工程,然後pod我們的新私有庫

pod init 修改Podfile

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

source ‘http://git.yourUrl/youaccount/CTMSpecs.git’        #私有倉庫地址
target 'CTtest' do
pod ‘CTMediator’
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  # Pods for CTtest

  target 'CTtestUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end
~                                                                                                                                        
~              

pod install後就可以用了

4.更新維護podspec。

當我們的程式碼變動時,首先需要更新code Repository中的.podspec 檔案的版本,然後push到 Spec Repository。