移动开发之Fastlane自动化
- 在组件化开发过程中, 提交一个私有库需要执行很多操作和命令, 详情可参考iOS组件化之私有库
- 然而开发和更新私有库的大量操作却都是重复性的: 修改
spec
文件, 提交到远程仓库, 打标签等 - 所以有没有什么办法可以自动执行, 实现自动化管理呢?
- 何为自动化: 自动化就是通过一条简单的命令, 去执行一组固定的操作
- 自动创建和维护
iOS
代码签名证书 - 自动创建和打包
iOS
的APP
- 上传屏幕截图、元数据和
App
到APP
商店审核 - …….
- 自动创建和维护
FastLane
介绍
简介
- Fastlane官网,
- 用于配置
iOS
和Android
的持续集成的神器 Fastlane
是一套工具,帮助你简化和自动化 App 发布或部署的过程,将之变成一条平直的工作流Fastlane
是用Ruby
语言编写的一套自动化工具集和框架,每一个工具实际都对应一个Ruby
脚本,用来执行某一个特定的任务Fastlane
核心框架则允许使用者通过类似配置文件的形式,将不同的工具有机而灵活的结合在一起,从而形成一个个完整的自动化流程Fastlane
是一个ruby脚本集合,它可以按照我们指定的路线,在指定位置执行我们所要执行的操作。这里我们称这样的路线为「航道(lane)」,这样的操作称为Action
- 到目前为止,
Fastlane
的工具集大约包含170多个小工具,基本上涵盖了打包,签名,测试,部署,发布,库管理等等移动开发中涉及到的内容, 工具的描述和使用可参考: Action官方文档和Github源码 - 如果这些工具仍然没有符合你需求的,没有关系,得益于Fastlane本身强大的Action和Plugin机制,如果你恰好懂一些Ruby开发的话,可以很轻易的编写出自己想要的工具
安装
- 确保ruby为最新版本
1 | brew update |
- 安装
fastlane
1 | sudo gem install -n /usr/local/bin fastlane |
fastlane
相关操作命令
1 | // 查看当前fastlane版本 |
- 如果出现类似的错误, 则可能是
ruby
源问题, 可更换ruby
源后重新安装
1 | ERROR: Could not find a valid gem 'fastlane' (>= 0), here is why: |
更换`ruby`源
1 | // 官方https://gems.ruby-china.com/把org改成了com, 使用时注意替换 |
fastlane
提交私有库
初始化fastlane
cd 到当前目录, 执行fastlane init
命令
但是对于提交私有库来说这个过程会创建一些无用的文件, 包括双穿需要的appleID
等, 有雨我们不涉及这些, 所以我们还可以直接创建所需文件
1 | cd 根目录 |
接下来就是编写Fastfile
文件内容
配置Fastfile`文件
语法解析
fastlane init
创建好文件后, 打开Fastfile
文件, 默认内容如下
1 | default_platform(:ios) |
platform
: 使用的平台desc
: 描述航道的作用lane
: 命名航道名称和相关Action
custom_lane
: 即为航道名称, 可自定义- 如需外界传递参数, 可在do后面添加
|options|
- 接受外界传递参数, 在添加
options
后, 可定义如下参数
1 | tagName = options[:tag] |
外部使用命令是, 即可通过xxx tag: 0.0.1
进行传值
`Fastfile`文件
Fastfile
文件的作用就是把正常使用的命令转成fastlane
的语法, 并在该文件中执行, 可在官方文档中查找对应的语法- 以==提交私有库到远程==为例, 就是把所有相关命令, 找到对应的
fastlane
命令写在Fastfile
文件中执行
Fastfile
文件配置
提交私有库时, 需要执行的命令如下
1 | // 将本地库更像到测试项目 |
- 打开官方文档搜索
- 例如: 搜索
pod install
, 对应的即为cocoapods
, 如下
Fastfile
文件配置内容如下, 可做响应的参考
1 | default_platform(:ios) |
Fastfile
文件编写完成, 需要检测文件语法是否有误, cd 进入根目录, 执行fastlane lanes
- 如果没问题, 执行命令
fastlane 航道名称 参数1:值1 参数2:值2
- 示例:
fastlane DownloadLane tag:0.1.0 target:TKDownLoad
- 正常情况下, 私有库已经被提交到远程仓库了, 并更新了对应的索引库
自定义Action
- 有的时候官方提供的所有的
Action
并不能满足我们的需求, 不过fastlane
具有很好的扩展性, 支持自定义Action
- 找了半天才发现一个删除远程私有库标签的命令, 官方文档中没有提供
- 这里我们就自定义一个删除远程私有库标签的
Action
创建ruby
文件
- 首先打开终端, cd 进入
fastlane
文件夹所在的上级目录 - 执行
fastlane new_action
命令, 创建新的Action
, 过程中会让你输入你自定义的Action
名字 - 注意命令规范, 单词之间可用下划线连接
之后fastlane
文件内会多一个actions
的文件件, 内有delete_tag.rb
文件, 如下
- 最后就是编辑该
rb
文件, 当然可能需要懂一些ruby
语言的语法, 如果不懂也没关系, 到Github源码找一个类似功能的rb
文件, 照葫芦画瓢吧!
下面把我自定义的actions
的相关代码贴出来
1 | module Fastlane |
最后需要验证rb
文件是否格式正确, 终端输入fastlane action delete_tag