在第一次组件化的时候,需要执行很多操作,这些操作可以在【iOS-组件化开发(一):远程私有库的基本使用】,这里就不再赘述,在组件化后的重复性操作就是升级,而升级这个过程是一模一样的。那么,我们有什么办法可以很方便的搞定这一过程来节约我们大量的时间呢?
在第一次组件化的时候,需要执行很多操作,这些操作可以在【iOS-组件化开发(一):远程私有库的基本使用】,这里就不再赘述,在组件化后的重复性操作就是升级,而升级这个过程是一模一样的。那么,我们有什么办法可以很方便的搞定这一过程来节约我们大量的时间呢?
一、升级必备操作
修改完核心代码后,一共还需要做以下几步:
1、修改spec文件(修改s.version,s.description等)
2、pod install
(使Example与pod下来的库产生关联)
3、提交本地仓库代码至远程仓库
4、打标签,并提交至远程
5、验证spec,并提至私有索引库
二、Fastlane
1、简介
Fastlane文档说明
Fastlane是一个ruby脚本集合,它可以按照我们指定的路线,在指定位置执行我们所要执行的操作。这里我们称这样的路线为「航道(lane)」,这样的操作称为「Action」
Action是Fastlane自动化流程中的最小执行单元,用来执行Fastlane脚本中的命令,关于更多的描述可以到Actions - fastlane docs查看,里面也介绍了常用的action有哪些,顺带附上action的源码地址,这个源码在后面自定义起参考作用
2、 安装
确保ruby为最新版本
Code1
2brew update
brew install ruby安装fastlane
Code1
sudo gem install -n /usr/local/bin fastlane
查看当前fastlane版本
Code1
fastlane --version
查看所有action
Code1
fastlane actions
三、fastlane初始化
cd到你的本地组件仓库的根目录
初始化fastlanefastlane init
不过这个步骤对我们来说可以跳过,在init后提示你输入一些东西,包括上传需要用到的APPLE ID什么的一堆东西,由于我们并不涉及这些,所以我们使用更方便的方式
1 | # 创建一个fastlane文件夹 |
1、修改Fastfile
1 | desc '描述航道作用' |
航道上要扫描的操作可以到Actions上查找,可以通过关键字搜索,如下图
点进去可以看到具体的使用及参数说明
这里附上本人的Fastfile内容:
1 | desc 'LXFUpdatePodTool 航道用来自动化升级维护私有库' |
2、验证Fastfile
1 | fastlane lanes |
3、执行fastlane
1 | fastlane LXFUpdatePodTool tag:0.1.1 specName:LXFMain |
整个执行过程不超过30秒~
四、自定义Action
以上的过程已经可以完成一整个自动化更新了,但是有一点需要注意的是,这个输入的tag可能会面临一个问题,那就是本地和远程都可能已经存在,即发生冲突,这个时候我们可以选择自动删除本地和远程冲突的那个tag,再重新上传当前tag
1、创建一个新的action
1 | fastlane new_action |
完成后fastlane目录下就会多出一个名为actions的文件夹,里面存放的就是你自定义action
2、编辑自定义action
打开remove_git_tag.rb,开始自定义我们的action吧,什么?不会语法怎么办?可以参考别人的嘛,上面给出的action的源码地址就有用武之地了,比如pod_push。这里我直接贴出我已经完成的主要代码
1 | # 可以使用 fastlane action remove_git_tag 来参看详细描述 |
3、查看action描述
同样,这里先cd到组件库的根目录下执行,原因是这个自定义action只存在当前根目录下的fastlane中,其它fastlane的非自定义的action就不用在当前根目录下操作~
1 | fastlane action remove_git_tag |
:fastlane实现pod自动化/查看具体描述.png)
4、测试执行
先来看看当前组件库已存在的tag
1 | git tag |
:fastlane实现pod自动化/已存在的tag.png)
可以看到,我是已经有一个0.1.1
版本的了。这时我们再来执行一次LXFUpdatePodTool航道
1 | fastlane LXFUpdatePodTool tag:0.1.1 specName:LXFMain |
:fastlane实现pod自动化/自动清除.png)
五、工具拿走
LXFUpdatePodTool 已经传到我的GitHub上,需要的同学就拿走吧,顺手给个Star咯 Orz