使用fastlane deliver 自动上传App Store Connect 物料和截图
背景
时光荏苒,今年发生了很多事情(省略2w字)。最终iOS商店页物料上传的工作,辗转最终准备交给开发团队来处理。
运营丢过来的物料有6个国家,10种语言,每个语言6~7张截图,各种主标副标变更,更新点文案,哇的一下就哭出来了。
程序员懒癌发作,经过大概30s的google搜索和10s的艰难决策,我最终选择了fastlane。
提交在即,让持续集成帮忙估计不现实,就自己开始搞了。(当然最终还是希望能够放在持续集成一起完成。)
fastlane
fastlane是为iOS和Android应用程序自动化测试部署和发布的最简单方法。🚀它处理所有繁琐的任务,如生成屏幕截图,处理代码签名以及发布应用程序。
fastlane组件
fastlane是一套工具集,包括:
- 测试
- scan => 自动运行测试工具,并且可以生成漂亮的HTML报告
- 证书,配置文件
- 截图
- 编译
- shenzhen => 当年大名鼎鼎的自动编译工具,现在已经被弃用了
- gym => Fastlane家族的自动化编译工具,和其他工具配合的非常默契
- 发布
- TestFlight管理
- 辅助工具
- spaceship => 为pilot,boarding和deliver等工具提供和 iTC 和 ADC 的交互API。spaceship本来是个独立的项目,后来被Fastlane收编进来
- WatchBuild => 是一个独立的iTC监控工具,开启WatchBuild可以监控iTC上的文件状态,弹出MacOS自带的Notification
- Android
- supply => 自动上传到Google Play工具(如果有时间,我想把国内提供API的Android Store都写个插件自动上传,这个问题从10年我刚开始工作就觉得是个痛点)
- screengrab => Android的自动截图工具
fastlane中的概念
fastlane命令是一个流程控制的命令行工具(CLI),通过内部集成action和第三方的action完成一系列控制流程。运行fastlane命令行工具,会读取当前目录或者./fastlane目录下的Fastfile配置文件。
在Fastfile中:
- action => Fastlane中的每一条命令都是一个扩展(action),上面提到的deliver,sigh之类的工具本身是CLI,但是在Fastlane中内嵌了对他们支持的action
- lane => Fastlane中流程的合集,每一个动作即可以是action,也可以是其他的lane。语法和ruby中的rake非常像
一个简单的发布流程:
1 2 3 4 5 6 7 8 9 10 11 12 |
lane :deploy do # 执行 pod instasll cocoapods # 执行 carthage bootstrap carthage # 增加build版本号 increment_build_number # 编译代码 gym # 发布到Apple Store deliver(force: true) end |
总之,fastlane帮你统一定义、运行、自动化你的app发布流程,并且可以和其他第三方工具如CocoaPods等很好的结合,也可以和其他第三方持续集成(Continuous Integration)工具如Jenkins等完美的结合。
fastlane