Pod 私有仓库构建
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
Pod 私有仓库构建的更多相关文章
- Kubernetes本地私有仓库配置
实验环境 master 10.6.191.181 node1 10.6.191.182 node2 10.6.191.183 本地私有仓库 10.6.191.184 一.安装本地私有仓库 1.安装do ...
- Docker容器学习梳理 - 私有仓库Registry使用
但有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似.使用私有仓库有许多优点: 1)节省网络带宽,针对 ...
- docker 创建镜像,并推送到私有仓库
创建镜像 创建 Dockerfile 镜像命名规则:registyr_url / namespace / depart / name : version 用这个规则创建的镜像,可直接推送到私有仓库 ...
- CentOS7搭建Docker私有仓库----Docker
有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似.目前Docker Registry已经升级到了v2 ...
- java~gradle构建公用包并上传到仓库~使用私有仓库的包
在新的项目里使用仓库的包 上一讲中我们说了java~gradle构建公用包并上传到仓库,如何发布公用的非自启动类的包到私有仓库,而这一讲我们将学习如何使用这些包,就像我们使用spring框架里的功能包 ...
- Docker | 第六章:构建私有仓库
前言 上一章节,讲解了利用Dockerfile和commit进行自定义镜像的构建.大部分时候,公司运维或者实施部门在构建了符合公司业务的镜像环境后,一般上不会上传到公共资源库的.这就需要自己搭建一个私 ...
- 【Docker构建私有仓库】
Docker默认不允许非HTTPS方式推送镜像,我们可以通过Docker的配置选项来取消此限制: [root@fedora ~]# cat /etc/docker/daemon.json { &quo ...
- Docker 构建私有仓库
Docker Hub 目前Docker官方维护了一个公共仓库Docker Hub,其中已经包含了数量超过15000的镜像.大部分需求都可以通过在Docker Hub中直接下载镜像来实现. 可以在htt ...
- 【转】使用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 ...
随机推荐
- C# 设计模式 (一)
学习来自<大话设计模式>有兴趣可以研究一下 一.简单工厂模式 原理 子类对象可以赋值给父类对象.同一个父类对象的子类,通过switch语句new出来(当然用if也可以但那样判断就多了起来) ...
- hdu 3123 2009 Asia Wuhan Regional Contest Online
以为有啥牛逼定理,没推出来,随便写写就A了----题非常水,可是wa了一次 n>=m 则n!==0 注意的一点,最后 看我的凝视 #include <cstdio> #includ ...
- sanic之websocket路由
在某些时候,需要建立websocket路由,来建立长链接,来实时传输数据,就比如一些聊天应用,就有实时音视频,需要实时传出状态 在sanic框架中支持两种websocket路由方式,有一种是再app中 ...
- Linux fork创建子进程
1. pid_t fork(void); 功能:创建父子进程 参数:无 返回值:成功:在父进程中:返回值为子进程的PID 在子进程中:返回值为0 失败:-1 注意: 1)fork函数是用来创建进程的 ...
- php7 安装时需求的依赖包
php70 php70-bcmath php70-cli php70-common php70-devel php70-fpm php70-gd php70-json php70-mbstring p ...
- Windows中区位码转换为机内码
步骤的简化 区位码的区和位分别加上32得到国标码, 再分别加上128得到机内码 区位码的区和位分别加上160得到机内码 区位码加上A0A0H = 机内码 示例: 我 我的区位码是4650 区位码 46 ...
- leetcode-数组的相对排序
Python解法: def relativeSortArray(arr1, arr2): arr = [0 for _ in range(110)] new = [] for a in range(l ...
- 使用babel转码器,让浏览器支持es6语法
ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,可是很多浏览器并不支持es6语法,所以我们需要一个转码工具, 把es6的语法转换成浏览器支持的javascr ...
- JAVA Java中@Override的作用
@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 1.可以当注释用,方便阅读: 2.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错.例 ...
- mysql利用st_distance函数查询附近的点的功能
随着近几年各类移动终端的迅速普及,在手机移动定位app中,附近的人,附近的地点功能十分常见,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理 ...