Fastlane是一个完全开源的项目GitHub - fastlane/fastlane: 🚀 The easiest way to automate building and releasing your iOS and Android apps,实际上是一个Ruby实现的工具集合,他可以完成iOS和Android工程的自动化操作,可以简化一些乏味、单调、重复的工作,比如截图、代码签名和发布App。
只要一条命令就可以从Xcode项目到编译、打包、提交审核。
一. CI、CD
简单介绍一下CI和CD。
1.CI:持续集成
CI全称Continuous Integration,表示持续集成。
在CI环境中,开发人员会频繁地向主干提交代码,这些新提交的代码会在最终合并到主干前,需要经过编译和自动化测试进行认证。
持续集成过程中很重视自动化测试验证结果,以保障所有的提交在合并主线之后的质量问题,对可能出现的一些问题预警。
CI要求开发人员为提交的代码创建自动化测试用例;
并且需要一个持续集成服务器,监控代码提交情况,并且对每次新提交的内容进行自动化测试;
研发团队也需要尽可能快的提交代码。
2.CD:持续部署
CD全称Continuous Deployment,表示持续部署。
在CD环境中,通过自动化构建、测试和部署环来快速交付高质量的产品。某种程度上代表了一个开发团队工程化的程度,任何修改通过了所有已有的工作流就会直接和客户见面,只有当一个修改在工作流中构建失败才能阻止它部署到产品线。
持续部署没有定义的发布日,开发人员修改工作后几分钟就可以上线了。
基本上,当开发人员在主分支中合并一个提交时,这个分支被构建、测试,如果一切顺利,则部署到生产环境中。
CD中研发团队测试理念比较完善。测试单元的健壮性决定你的交付质量;
文档和部署频率要保持一致;
特征标志成为发布重大变化过程的固有部分;
3.CD:持续交付
CD全称Continuous Delivery,是一种软件工程手法。
在CD环境中,可以让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以发布的状态。他的目标在于让软件的构建和测试以及发布更加频繁。这种方式可以减少软件开发的成本与时间,减少风险。
有时候,持续交付也与持续部署混淆。持续部署意味着所有的变更都会被自动部署到生产环境中。持续交付意味着所有的变更都可以被部署到生产环境中,但是出于业务考虑,可以选择不部署。如果要实施持续部署,必须先实施持续交付。
CD中需要有强大的持续集成组件和足够多的测试项可以满足代码的需求;
并且部署需要自动化,触发是手动的,但部署一旦开始,就不能人为干预;
并且可能需要接受特性开关,没有完成的功能模块不会影响到线上产品。
二. 搭建环境
1.Ruby
因为fastlane是一个ruby的脚本集合,所以必须要安装Ruby。要保证Ruby的版本要不低于2.0。可以通过命令行来确认Ruby的版本。
|
|
一般情况下OS X 10.9(Mavericks) 下默认安装的都是Ruby2.0版本,如果低于2.0可以自行google一下如何升级。
2.Xcode命令行工具
可以再命令行中输入命令判断是否安装了命令行工具。
|
|
如果发现如下提示
|
|
则说明已经安装过了,否则时候弹窗安装Xcode命令行工具。
3.fastlane
终于到了安装fastlane的时候了。
直接执行
|
|
就可以了。期间有可能遇到报错,可能是因为源的问题,修改一下ruby的sources就可以了。
接下来就可以使用了。
三. 使用fastlane
1.fastlane init
Cd到你的项目所在目录,然后执行命令就可以了。
|
|
然后小火箭转完,就会有四个选择,让你选择使用它做什么。
|
|
- 📸 Automate screenshots (自动截取屏幕截图)
- 👩✈️ Automate beta distribution to TestFlight (自动发布TestFlight版本)
- 🚀 Automate App Store distribution (自动发布App Store版本)
- 🛠 Manual setup - manually setup your project to automate your tasks (手动配置内容)
tips:可以把每一种都试一下,反正把fastlane文件夹删除了之后重新init就可以了
2.TestFlight
第一个屏幕截图先跳过,我们直接使用2.TestFlight。
输入2之后敲回车,接着他会让你输入Apple ID username
|
|
输入AppleID之后,会让你输入密码,如果有开启2FA(现在应该都强制开启了),就会让你以你的2FA方式输入内容。
|
|
之后就会看到登录成功了,然后创建成功了,会提示敲回车继续,接下来就是一路回车,会提示你各种使用方式,下边这段可以省略。
|
|
|
|
|
|
最后看到如下代码就说明已经创建成功了。通过fastlane beta
就可以执行了。
|
|
3.AppStore
回到之前init的地方,这次我们选择3.AppStore。同样还是输入AppleID,只不过title变了而已。
|
|
因为之前登陆过了,所以这次不用输入密码和2FA验证码了。
接下来会问,是否允许fastlane帮你管理metadat。
|
|
接下来也是一顿回车,然后就会发现创建成功了,可以通过fastlane release
来调用打包上传App Store。
|
|
之后运行fastlane release
,应用成功之后就会跳出一个h5页面,给你审查App的一些信息。
|
|
如果确认没有问题,就可以输入y啦。
之后,还会需要你输入一个 application specific password 。
生成application specific password 可以在 appleid.apple.com/account/manage 中的安全部分下的App专用密码中生成一个给Fastlane的专用密码。
如果想要查看已经生成过的专用密码,则可以在安全中点击编辑,然后再App专用密码中点击查看记录。
最后你会看到这个,就表示已经上传成功啦。
|
|
配置文件
Fastfile
这个文件算是最重要的文件了,这里是配置管理lane的,可以在里边编写一些函数,然后调用。
其实这个就是一个ruby脚本,所以不一定非要在这写一些官方的action,也可以写一些其他的ruby命令。
Appfile
用来存储App公共信息,存放app_identifier、apple_id和team_id。
Deiverfile
这里主要是用来写AppleStoreConnect中的配置,包括是否有广告标识以及 更新文案之类的内容。
|
|
metadata
这里是个文件夹,也是在AppleStoreConnect中相对应的东西。
screenshots
这里就是App Store的截图数据。
未完待续。。。
基本命令
Build
|
|
|
|
增加build版本号
|
|
TestFlight
|
|
参考文档
fastlane Tutorial: Getting Started | raywenderlich.com
fastlane一步一步实现从安装到自动打包(最新) - 简书
fastlane与持续集成 - - SegmentFault 思否
https://blog.csdn.net/qq_34047841/article/details/54943753?spm=a2c4e.10696291.0.0.35a019a4OhB2hp