Fastlane是一套使用Ruby写的自动化工具集和框架,旨在简化Android和iOS的部署过程,自动化你的工作流。它可以简化一些乏味、单调、重复的工作,像截图、代码签名以及发布App。其实自动化打包的工具有很多,比较流行的有Jenkins
和fastlane
,原来使用Jenkins
,感觉这个工具比较麻烦,需要配置很多东西,然而fastlane
是比较简单快速的,并且还可以管理证书,所以fastlane是一个很好的选择。
fastlane提供了当下我需要的几种功能:
- 一行命令实现打包
- 通过配置上传蒲公英或fir
- 证书的同步更新和管理
Fastlane是一套工具的集合,比如一些常见的action:
- cert: 创建和维护证书签名
- sigh: 配置文件
- gym: 构建打包应用程序
- deliver: 上传应用程序和屏幕截图到App Store Connect
- pilot: TestFlight上传构建并处理其管理
- scan: 自动化测试
- match: 团队中同步证书和配置文件
- pen: 管理推送配置文件
- produce: 在App Store Connect创建新的App
具体事件可以参考官方文档docs.fastlane.tools/actions/
安装fastlane
- brew install --cask fastlane或者sudo gem install fastlane -NV 命令安装,我选择的是brew安装。安装的时候报了如图的错误,然后按照提示执行brew update
- 安装完了执行
fastlane --version
,确认下是否完成安装
初始化fastlane
- cd到项目的目录,然后执行fastlane init
- 这里会弹出四个选项,问你想要用Fastlane做什么?这四个选项的意思分别是:
- 自动截屏
- 自动发布beta版本用于TestFlight
- 自动的App Store发布包
- 手动设置项目
- 这里我直接选择3,自动配置。然后需要选择Scheme,因为我是通过Scheme配置的多环境,所以这里选择比较多
- 选择完之后就是需要输入开发者账号的邮箱,接着发送验证码,输入验证码。登录成功后会提示你是否需要下载你的App的metadata,点y等待就可以了。成功之后在工程目录下就会发现多了几个文件
- 点击进入fastlane目录
- 这几个文件其中metadata和screenshots分别对应App元数据和App Store的应用截图
Appfile主要存放App的app_identifier、apple_id、itc_team_id、team_id
Fastfile文件是需要我们配置的文件,这个里面默认配置了一个打包App Store的lane
fastlane的使用
我们还可以自定义一些lane,在lane里面添加一些需要用的action,这里我添加了一个在debug下打包的lane。 这里上传蒲公英是需要添加插件的,在终端运行fastlane add_plugin pgyer,就可以把打好的包上传蒲公英。fir也是同理。
desc "打包到蒲公英"
#options这里就是可以传进来的参数
lane :test do |options|
gym(
clean:true, #打包前clean项目
export_method: "development", #导出方式
scheme:"", #scheme
configuration: "Debug",#环境
output_directory:"./app",#ipa的存放目录
output_name:get_build_number()#输出ipa的文件名为当前的build号
)
#蒲公英的配置 替换为自己的api_key和user_key
pgyer(api_key: "XX",
user_key: "XX",
update_description: options[:desc])
end
这样就可以开始执行了,在终端输入fastlane test desc:测试打包,这个就是上面设置的lane的简称。在整个构建的过程中,我们会发现会执行输出了 Clean Succeeded、xcodebuild等等。然后一直等待,最终会出现fastlane.tools finished successfully,就打包成功了也上传到蒲公英了。
配置通知机器人,蒲公英打好包是可以通知企业微信、钉钉和飞书的。选择会使用通知的App,然后根据需求进行Webhook设置。
我这里设置的是在钉钉群通知添加的机器人进行通知,找到机器人的Webhook,然后添加到蒲公英的Webhook就可以了。这样设置完,只要正常打完包机器人就会在钉钉群进行通知了。
如果出现一只卡在**$ bundle update**,则需要更换RubyGems镜像
#替换镜像
$ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
#执行查看当前镜像,是否替换成功
$ gem sources -l
https://gems.ruby-china.com
配合Jenkins实现自动化构建
这样打包每次都需要在终端输入命令运行,这些其实也可以交给Jenkins来做。Mac如何安装Jenkins这篇文章写的很详细juejin.cn/post/702579… 。如何初始化Jenkins可以参考这篇文章juejin.cn/post/702801… 。配置完源码管理git之后,因为fastlane是ruby语言编写的,所以需要增加构建环境RVM,不然没法运行。安装这个插件
通过ruby -v获取ruby的版本,填写在这里
然后增加构建步骤,执行shell脚本,echo fastlane test desc:测试打包
,``里面写执行的语句。然后保存就可以构建了。最终会和在终端执行命令是一样的,这样就可以随时构建而不是手动构建打包了。
注意
因为初始化fastlane是在工程目录下的,工程目录是多了几个文件的,在提交git的时候可以选择忽略这几个文件
match来管理代码签名
match是fastlane提供的一种全新的管理证书的方式,它使团队所有成员共享一份证书和描述文件,以减少不必要的证书创建,描述文件失效等问题。
-
match使所有成员共享同一份证书和描述文件,大大减少管理和维护的成本,并有着完善的同步机制。
-
因为match将所有的证书和描述文件存放于你的git仓库中,所以只要拥有git仓库的访问权限,安装了fastlane,那新设备可以迅速投入到工作中。
-
简化请求证书,生成描述文件,注册设备等工作,这些全部可以在终端通过命令进行操作。
关于如何操作match,可以参考这个配置www.jianshu.com/p/596294052…
注意
一定要注意Jenkins里面配置的ruby的版本,是不是当前正在使用的ruby版本,并且fastlane是不是在这个版本上安装的。ruby是脚本语言,一般出问题就是路径、版本的问题。
卸载fastlane
brew uninstall fastlane