zoukankan      html  css  js  c++  java
  • Pod 私有仓库构建

     Pod 私有仓库构建

    1. 创建`私有仓库索引库`(iOS)
    2. 添加`私有仓库索引库`到本地repo管理
    3. 创建自己的`组建库工程
    4. 上传`组建库工程`到`私有仓库索引库`
    5. 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

  • 相关阅读:
    Decision Tree
    Bigtable:结构化数据的分布式存储系统
    堆排序分析及php实现
    PDO防sql注入原理分析
    memcached的key,value,过期时间的限制
    归并排序--详细解释版
    深入理解redis持久化
    strace追踪未开始或者来不及捕获pid的进程(译)
    php中session锁--如何防止阻塞请求(译)
    php多进程总结
  • 原文地址:https://www.cnblogs.com/kingbo/p/11455043.html
Copyright © 2011-2022 走看看