fastlane实现组件pod自动化

380 阅读3分钟

修改完核心代码后,一共还需要做以下几步: 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:组件库名称即可