修改完核心代码后,一共还需要做以下几步: 1、修改spec文件(修改s.version,s.description等) 2、pod install (使Example与pod下来的库产生关联) 3、提交本地仓库代码至远程仓库 4、打标签,并提交至远程 5、验证spec,并提至私有索引库 所以 以下用fastlane方式实现组件pod打tag发版自动化,最终在终端只需一行命令即可更新版本
1.fastlane简介
Fastlane文档说明 Fastlane是一个ruby脚本集合,它可以按照我们指定的路线,在指定位置执行我们所要执行的操作。这里我们称这样的路线为「航道(lane)」,这样的操作称为「Action」 Action是Fastlane自动化流程中的最小执行单元,用来执行Fastlane脚本中的命令,关于更多的描述可以到 Actions - fastlane docs 查看,顺便附上 action的源码地址
2.fastlane安装
2.1确保ruby为最新版本Objc brew update brew install ruby 2.2安装fastlaneObjc sudo gem install -n /usr/local/bin fastlane踩坑记录: ERROR: Error installing fastlane: ERROR: Failed to build gem native extension. current directory: …extconf.rb mkmf.rb can’t find header files for ruby at …extconf failed, exit code 1 中间还有一段提示,让你更新ruby的环境 ruby-dev或者ruby-devel 解决链接
3.fastlane初始化
标准创建,是使用$ fastlane init 但目前使用场景不需要,执行以下操作即可 cd到本地组件仓库的根目录
创建一个fastlane文件夹
进入fastlane目录
创建一个Fastfile文件
mkdir fastlane cd fastlane touch Fastfile
4.fastlane文件修改
航道上要扫描的操作可以到 Actions - fastlane docs 上查找 ```Objc
描述航道
desc "pod私有库自动化"
定义航道, 航道名称是 repo
lane :repo do |options| target = options[:target] tag = options[:tag]
定义action
测试工程install
pod install
cocoapods( podfile: "./Example/Podfile" )
提交本地仓库
git add .
git_add(path: ".")
git commit -m "xxx"
git_commit(path: ".", message: "维护pod私有库")
推送远程仓库
git push origin master
pushtogit_remote
判断是否有该版本, 如果有就先删除
if gittagexists(tag: tag) UI.message("您输入的tag:#{tag}已存在,即将自动清除") removegittag(tagNum: tag) end
打版本标签 记得podspec先修改版本号
git tag -a '#{tag}'
addgittag( tag: tag )
推送到远程库
git push --tags
pushgittags
本地验证私有库 这里要写自己组件验证时需要的指令
pod lib lint
podliblint(allowwarnings: true,uselibraries:true)
推送到私有管理库 CommonSpec本地索引库repo的名字一般不会更改这里直接写死
pod repo push CommonSpec "#{targetName}.podspec"
podpush(path: "#{target}.podspec", repo: "CommonSpec", allowwarnings: true,use_libraries:true) end ```
5.验证fastfile
fastlane lanes
6.执行fastlane
fastlane 航道名称 tag:版本号 target:组件库名称 例如: cd到组件的根目录Objc fastlane repo tag:0.2.0 target:OLEAsyncSocket如果出现tag冲突,可以自行删除该tag,新的项目需要先关联一下远程仓库 以上做完成功后,后续组件更新代码发版更新至spec管理仓库只需要在组件根目录终端执行Objc fastlane 航道名称 tag:版本号 target:组件库名称即可