Fastlane自动化发布工具

平时开发新功能的时候,需要经常提交测试包到fir,然后给测试人员安装,每次发布都得更改配置、clean 缓存,是一件很繁琐的事情,稍微一点不注意可能就选错了描述文件、版本号等等
以前看过有人用自动化发布工具,一直没有尝试应用,刚好这两天发布了新版,时间充裕了些,就开始部署一下自动化工具。

fastlane命令是一个流程控制的命令行工具(CLI),通过内部集成action和第三方的action完成一系列控制流程。运行fastlane命令行工具,会读取当前目录或者./fastlane目录下的Fastfile配置文件。

安装

确保Xcode Command Line Tools 安装了最新版

xcode-select --install

如果你单独安装过ruby(如果你能看得懂这句),去掉sudo。如果使用系统自带的ruby,需要sudo权限
[sudo] gem install fastlane

初始化

进入到项目的根目录下

fastlane init

问了你的Apple ID,Team的问题之后,fastlane会自动检测当前目录下项目的App Name和App Identifier。如果检测的不对,选择n自行输入。

也可以不输入你的 Apple ID

接下来会问你这个app是否需要在iTC和ADC中创建(上一步中如果选择y会自动检测是否需要创建),fastlane会调用produce进行初始化,如果现在还不想创建,也可以之后再运行produce init进行这个流程。如果不执行produce的流程,deliver的流程也会被掠过,当然之后也可以deliver init运行完全一样的流程。

在执行deliver init的过程中,会同步iTC中的所有语言的元数据和截图,并按照目录结构组织好。

这里肯定会被创建的是Appfile和Fastfile。

Fastfile => 用来定义所有的lane任务Fastfile帮助
Appfile => 是用来存储一些公共信息的,比如app_identifier,apple_id,team_id,itc_team_id等。Appfile帮助
Deliverfile => deliver的配置文件Deliverfile帮助

插件

Fastlane的插件是一个或者一组action的打包,单独发布在fastlane之外。

在这里可以查看所有的插件

fastlane search_plugins

我在这里只用了两个插件fastlane-plugin-versioning fastlane-plugin-firim

  • fastlane-plugin-versioning

用来修改build版本号和version版本号

Fastlane内嵌的actionincrement_build_number使用的是苹果提供的agvtoolagvtool在更改Build的时候会改变所有target的版本号。这时如果你在一个工程里有多个产品的话,每次编译,所有的Build都要加1,最后就不知道高到哪里去了。

有了fastlane-plugin-versioning不仅可以指定target增加Build,而且可以按照「语义化版本」规范增加Version,当然也可以直接设定Version

  • **fastlane-plugin-firim **

直接把AdHoc或者InHouse打包的ipa上传到fir.im,供测试下载。

安装上面的插件

fastlane add_plugin versioning

fastlane add_plugin firim

Fastlane自动化发布工具_第1张图片
2017-09-13-fastlane-currentVersion.png

配置

有了Fastfile,就可以添加自己的发布流程了。打开Fastfile文件(这里我用Sublime 设定语法为Ruby).

Fastlane自动化发布工具_第2张图片
fastfile.png

Gym

gym 是执行的配置
常用配置项

Name Type Description Default
scheme string 指定需要编译的scheme
clean bool 是否在编译前clean false
output_directory string 导出目录 ./
output_name string 导出ipa名字 [app_name].ipa
export_options hash/string 这里指定Xcode API的外部配置文件地址,或者配置hash,见下文
export_method string 打包方式,可选项app-store ad-hoc package enterprise development developer-id 如果在fastlane中使用了sigh,这个值会从上下文获取
include_bitcode bool 是否开启bitcode Xcode API 默认值为true
include_symbols bool 是否生成符号表 Xcode API 默认值为true

Xcode7之后,Xcode API允许我们指定一个plist文件作为额外的配置文件。gym默认会帮你创建这个文件,你可以直接指定配置。更多关于plist可配置项,执行xcodebuild -help查看Available keys for -exportOptionsPlist
export_methodinclude_symbols,和include_bitcode 这些参数都是exportOptionsPlist的配置,对应methoduploadSymbolsuploadBitcode

在手动输入 build 的时候,需要工程文件中有这个 key,Current Project Version,否则在执行命令的时候会报错,无法使用 build

Fastlane自动化发布工具_第3张图片
currentVersion.png

使用

fastlane uploadTo_firim version:3.0.0 build:45

version 是这次打包的版本号
build 是这次的 build 号

回车就开始自动打包了

你可能感兴趣的:(Fastlane自动化发布工具)