1.私有库与公有库区别
1、私有库比公有库多了一个.podspec管理库。
2、因此在创建私有仓库,要创建两个仓库。一个仓库管理.podspec文件。一个管理代码文件。.podspec文件就是代码文件的索引。
2.解决史前巨坑fatal: Remote branch 0.1.0 not found in upstream origin
1、pod lib lint
本地验证成功,远程验证私有仓库pod spec lint
,出现以下问题。
wutosdeMac-mini:webViewLib wutos$ pod spec lint
-> webViewLib (0.1.0)
- ERROR | [iOS] unknown: Encountered an unknown error ([!] /usr/bin/git clone http://10.11.2.30/ry/webViewLib.git /var/folders/l7/dqmhv6657dg_24ks14hls5l00000gn/T/d20201225-11483-ezqnb6 --template= --single-branch --depth 1 --branch 0.1.0
Cloning into '/var/folders/l7/dqmhv6657dg_24ks14hls5l00000gn/T/d20201225-11483-ezqnb6'...
fatal: Remote branch 0.1.0 not found in upstream origin
) during validation.
Analyzed 1 podspec.
[!] The spec did not pass validation, due to 1 error.
1、网上给的答案无一例外是上传仓库的时候没有打tag。但是我非常确信我的tag打成功了,而且保持跟.podspec文件里的一致。这个时候就很僵了。这个错误是无法remote到这个branch,我在文件夹里git tag 查看到tag ,也查看到branch。这说明我的我的tag跟branch没有问题。没办法,我自己尝试git clone --branch 0.1.0 http://10.11.2.30/ry/webViewLib.git ,发现真的无法下载到这个branch,我蒙了,难道是这个链接错了吗,没有,他并没有错,而是格式错了。我这里使用的是内网的gitlab,已经配置了ssh,所以下载的时候都用git@10.11.2.30:ry/webViewLib.git的ssh链接,用这个就可以下载成功,成功之后一万个草尼玛从内心飘过。然后赶紧去修改xxx.podsepc里的s.source地址,s.source = { :git => 'git@10.11.2.30:ry/webViewLib.git', :branch=>'master', :tag => s.version.to_s }。
这个时候就可以验证通过了。
2、接下来就是将spec仓库跟私有仓管关联起来:pod repo push RYPodRepo webViewLib.podspec --allow-warnings。这时又失败了。原因是我在创建的索引库添加到本地cocoapods仓库的时候,依然用的是pod repo add RYPodRepo http://10.11.2.30/ry/RYPodRepo.git 地址,这个http地址是无法关联上gitlab的,改为pod repo add RYPodRepo git@10.11.2.30:ry/RYPodRepo.git
,这样索引仓库在gitlab上关联成功,查看本地仓库:pod spec list
。
3、接下来就是激动人心的将spec索引跟代码仓库关联起来。pod repo push RYPodRepo webViewLib.podspec --allow-warnings
,成功。
4、总结,如果是使用了gitlab的,最好都用SSH地址。
5、使用私人仓库的时候,在podflie里需要引入官方地址跟私人地址,pod会根据spec地址去下载安装插件。
source 'https://github.com/CocoaPods/Specs.git' #CocoaPods 官方 索引库
source 'git@10.11.2.30:ry/RYPodRepo.git' #私人 索引库
use_frameworks!