Fastlane:巡航控制上的 iOS 自动化
已发表: 2022-03-11为 iOS 制作软件不仅仅是编写 Objective-C 或 Swift 代码:它包括了解 UIKit 是如何工作的、如何制作证书、如何将你的应用程序发布到商店、如何处理应用程序评论等等。 如果您发现这个永恒的任务列表很累,那么您的工作流程中的一些自动化正是您所需要的。
认识 Fastlane,该工具旨在为您在每次部署中节省几分钟甚至几小时。
Fastlane 可帮助您自动化将 beta 构建发送到 Crashlytics、TestFlight、App Store 等的过程。
在本文中,您将了解如何使用 Fastlane 自动化您的 iOS 应用程序部署工作流程。 尽管我们将专注于该工具的 iOS 方面,但 Fastlane 也同样适用于 Android 开发自动化。
快速通道入门
您可以选择多种安装方法,具体取决于您认为最简单的方法。 如果你安装并配置了 Homebrew,安装 Fastlane 只需要一个命令:
brew cask install fastlane
否则,Fastlane 是一个基于 Ruby 的工具, gem
始终是一个选项:
sudo gem install fastlane -NV
或者,您可以随时从官方网站下载 Fastlane。
安装 Fastlane 后,在项目目录中运行fastlane init
并按照说明进行操作。
部署自动化
安装 Fastlane 后,您现在可以编写 Ruby 脚本来逐步指示您需要做什么才能将您的部署部署到您想要的位置。 这是使用动作、工具和通道完成的。
Fastlane 工具、操作和插件
Fastlane 以工具为核心来帮助您构建应用程序。 除了构建工具之外,还有超过 170 个与 Crashlytics、HockeyApp、TestFlight 等服务的内置集成,以及第三方制作和发布的更多插件,以便您可以连接到其他服务等等。
在它的核心,您可以获得让您执行各种任务的主要工具:从自动截屏到构图并将它们上传到商店,它可以让您在构建应用程序之前自动运行所有测试。
Actions 是 Fastlane 拥有的核心工具,插件是一种将第三方操作添加到您的 Fastlane 设置的方法。
车道
Fastlane 使用的通道本质上是按顺序对一系列操作或插件进行分组,以便您每次都能获得相同的结果。
在运行一个lane的时候,每个action都会导出一个环境变量,后面的action会自动获取这些变量来保持流程的进行。 例如,使用gym
动作会生成.ipa
文件的路径,使用crashlytics
会访问这个.ipa
位置,将这个文件上传到它的 beta 服务分发系统。
在 iOS 中使用 Fastlane
您从一个想要一个非常简单的应用程序的新 Toptal 客户开始。 设计已经完成,应用程序可以在几周内完成编码。 下一步是开始编写代码,在您的迭代过程中,您将每隔几周向客户发送一个测试版应用程序,以便他们可以看到您的进度并就事情的工作情况向您提供反馈。
每次向客户端发送 beta 版本时,您都将通过一个基本清单:签署应用程序、将其上传到 beta 服务、向其添加新版本等。添加您必须做的事情一次(每年):签署证书、签署推送通知证书(如果需要)等等。
有了 Fastlane,所有这些现在都可以自动发生!
发送到 Crashlytics Beta
例如,您需要创建签名证书和配置文件以通过 Crashlytics Beta 共享您的应用程序。
Fastlane 有一个名为match
的操作,一旦你设置它,它会执行以下操作:
- 创建分发签名证书。
- 创建一个临时配置文件(附加到来自 #1 的证书)。
- 将证书和配置文件从 #1 和 #2 保存到 Git 存储库,使用 OpenSSL 加密。
设置很简单。
首先,运行fastlane match init
开始,一旦你设置了 Git 存储库,只需调用fastlane match adhoc
来获取临时配置文件或运行fastlane match appstore
来获取 App Store 证书。
使用match
的优点是您可以在计算机之间以及队友之间非常轻松地同步证书,而无需再撤销证书,并且您获得了速度。 只需运行fastlane match appstore
在几秒钟内为您提供证书。
好吧,现在我们有了我们需要的证书和配置,让我们发布到 Crashlytics。
将您的应用程序提交到 Fabric 的 Crashlytics 的典型工作流程包括以下步骤:
- 创建分发签名证书。
- 创建一个临时配置文件(附加到来自 #1 的证书)。
- 将您的应用设置为使用 #2 中的配置文件。
- 归档您的应用程序。
- 打开 Fabric 并按照步骤将应用程序发送给 beta 测试人员。
Fastlane 用这个代替了繁琐的工作:

platform :ios do lane :beta do match(type: “adhoc”) gym crashlytics end end
现在,从您的终端运行fastlane beta
将启动此脚本。
这将首先调用match
,这是一个处理创建和更新签名证书和配置文件的操作,然后调用gym
,这是一个为您构建和打包应用程序的操作,使用之前创建的相同证书和配置文件,最后是crashlytics
,即将获取此已签名的.ipa
并将其上传到 Crashlytics 服务。
所有这些步骤总是以相同的顺序被调用,从而使生成的文件更可预测并减少错误。
MacBook-Pro:TestProject user$ fastlane beta +------+-------------------------------------+-------------+ | fastlane summary | +------+-------------------------------------+-------------+ | Step | Action | Time (in s) | +------+-------------------------------------+-------------+ | 1 | Verifying required fastlane version | 0 | | 2 | match | 57 | | 3 | gym | 592 | | 4 | crashlytics | 195 | +------+-------------------------------------+-------------+ [20:25:13]: fastlane.tools just saved you 14 minutes!
这是如何运行 Fastlane 以将您的应用程序发送到 Crashlytics 的基本设置。 我们还能自动化什么?
递增构建版本
例如,我们可以设置每次发送测试版时,我们要增加构建版本号。
这可以使用一个名为increment_build_number
的操作来实现,该操作可以通过fastlane run increment_build_number
从终端调用或在我们的 beta 通道中内联使用:
platform :ios do lane :beta do increment_build_number match(type: “adhoc”) gym crashlytics end end
恭喜! 您现在有一个自动部署脚本,它还会增加您的构建版本号。 唯一需要注意的是,一旦调用此通道,您将在项目中更改文件(或者至少是包含内部版本号的文件)。
如果您打算将更改提交到存储库,则有一个操作: commit_version_bump
。 此操作使用新版本号提交文件。
platform :ios do lane :beta do increment_build_number match(type: "adhoc") gym crashlytics commit_version_bump( xcodeproj:"myProject.xcodeproj", ) end end
这将提交带有类似“Version Bump to 27”的提交消息的文件。
Crashlytics 到 TestFlight
好吧,如果您做到了这一点,您可以在很短的时间内自动部署到 Crashlytics,从长远来看,这将为您节省无数小时。 最好的部分是,如果您想将应用程序发送到 TestFlight,您只需将crashlytics
更改为pilot
。
或者,您可以为此创建一个单独的通道:
platform :ios do lane :beta-testflight do increment_build_number match(type: "adhoc") gym pilot commit_version_bump( xcodeproj:"myProject.xcodeproj", ) end end
iOS 自动化变得简单
Fastlane 简单易用。 但是,它为您的常规 iOS 开发工作流程带来了惊人的价值,让您免于做琐碎的事情和您最终会浪费的时间。
我希望你会发现这篇关于 Fastlane 的介绍很有用。 您可以查看官方文档以了解有关 Fastlane 的更多信息,尤其是操作列表,如果您正在寻找可以为当前和下一个 iOS 项目自动化哪些内容的灵感。