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

Pod 私有仓库构建的更多相关文章

  1. Kubernetes本地私有仓库配置

    实验环境 master 10.6.191.181 node1 10.6.191.182 node2 10.6.191.183 本地私有仓库 10.6.191.184 一.安装本地私有仓库 1.安装do ...

  2. Docker容器学习梳理 - 私有仓库Registry使用

    但有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似.使用私有仓库有许多优点: 1)节省网络带宽,针对 ...

  3. docker 创建镜像,并推送到私有仓库

    创建镜像 创建  Dockerfile 镜像命名规则:registyr_url / namespace / depart / name : version 用这个规则创建的镜像,可直接推送到私有仓库 ...

  4. CentOS7搭建Docker私有仓库----Docker

    有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似.目前Docker Registry已经升级到了v2 ...

  5. java~gradle构建公用包并上传到仓库~使用私有仓库的包

    在新的项目里使用仓库的包 上一讲中我们说了java~gradle构建公用包并上传到仓库,如何发布公用的非自启动类的包到私有仓库,而这一讲我们将学习如何使用这些包,就像我们使用spring框架里的功能包 ...

  6. Docker | 第六章:构建私有仓库

    前言 上一章节,讲解了利用Dockerfile和commit进行自定义镜像的构建.大部分时候,公司运维或者实施部门在构建了符合公司业务的镜像环境后,一般上不会上传到公共资源库的.这就需要自己搭建一个私 ...

  7. 【Docker构建私有仓库】

    Docker默认不允许非HTTPS方式推送镜像,我们可以通过Docker的配置选项来取消此限制: [root@fedora ~]# cat /etc/docker/daemon.json { &quo ...

  8. Docker 构建私有仓库

    Docker Hub 目前Docker官方维护了一个公共仓库Docker Hub,其中已经包含了数量超过15000的镜像.大部分需求都可以通过在Docker Hub中直接下载镜像来实现. 可以在htt ...

  9. 【转】使用Dockerfile构建镜像并push到私有仓库

    环境:OS X 10.10.5 maven 3.3.9 Docker version 1.12.2 docker-machine version 0.8.2 程序示例为http://www.cnblo ...

随机推荐

  1. PHP面试 PHP基础知识 九(面向对象)

    面向对象 PHP的类权限控制修饰符 public(公共的) . protected(受保护的).private(私有的) public :最高权限   可以在类的内部使用  可以在类的外部使用  可以 ...

  2. LeetCode 相交链表&环形链表II

    题目链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/ 题目连接:https://leetcode-cn.com ...

  3. NIO 源码分析(05) Channel 源码分析

    目录 一.Channel 类图 二.begin 和 close 是什么 2.1 AbstractInterruptibleChannel 中的 begin 和 close 2.2 Selector 中 ...

  4. LBP算子

    LBP算子特点 LBP(Local Binary Pattern),即局部二值模式,属于一种图像预处理算法,具有光照不变性和旋转不变性. 我目前做的项目是人脸表情识别,采用这种算法可以减少光照和人脸旋 ...

  5. 【HDUOJ】1257 最少拦截系统

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257 题意:经典题. 题解:最长上升子序列. 代码: #include <iostream> ...

  6. .Net平台调用の初识

    前言 工作过程中难免遇到混合编程,现在我们要谈的是C#和c++语言的编程.C#要调用C++的库目前可选主要有两种方式:Com技术和平台调用(P/Invoke).现在我们要谈的是P/Invoke技术. ...

  7. Linux 进程间通信 消息队列 实现两个进程间通信

    例子: 通过消息队列实现两个进程间通信,一个进程从终端输入数据,通过消息队列发送,另一个进程通过消息队列接收数据 文件1 创建进程1 终端输入通过消息队列发送数据 #include <stdio ...

  8. webapi 找到了与请求匹配的多个操作(ajax报500,4的错误)

    1.ajax报500,4的错误,然而多次验证自己的后台方法没错.然后跟踪到如下图的错误信息! 2.因为两个函数都是无参的,返回值也一样.如下图 3,我给第一个函数加了一个参数后,就不报错了,所以我想, ...

  9. js求三个数的最大值运算

    js代码: <script> // var num1 = 32, // num2 = 43, // num3 = 98; // if (num1 > num2) { // if (n ...

  10. 【POJ3155】生活的艰辛Hard Life

    题面 Description ADN公司内部共 n个员工,员工之间可能曾经因为小事有了过节,总是闹矛盾.若员工u和员工 v有矛盾,用边(u, v)表示,共 m个矛盾.最近,ADN公司内部越来越不团结, ...