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

  • 相关阅读:
    centos7.6 使用yum安装mysql5.7
    解决hadoop本地库问题
    docker-compose 启动警告
    docker 安装zabbix5.0 界面乱码问题解决
    docker 部署zabbix问题
    zookeeper 超时问题
    hbase regionserver异常宕机
    (转载)hadoop 滚动升级
    hadoop Requested data length 86483783 is longer than maximum configured RPC length
    zkfc 异常退出问题,报错Received stat error from Zookeeper. code:CONNECTIONLOSS
  • 原文地址:https://www.cnblogs.com/kingbo/p/11455043.html
Copyright © 2011-2022 走看看