Fastlane实现自动打包

·  阅读 2108

Fastlane是一套使用Ruby写的自动化工具集和框架,旨在简化Android和iOS的部署过程,自动化你的工作流。它可以简化一些乏味、单调、重复的工作,像截图、代码签名以及发布App。其实自动化打包的工具有很多,比较流行的有Jenkinsfastlane,原来使用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

截屏2021-11-14 下午6.03.36.png

  • 安装完了执行fastlane --version,确认下是否完成安装

截屏2021-11-14 下午6.12.11.png

初始化fastlane

  • cd到项目的目录,然后执行fastlane init

截屏2021-11-14 下午6.22.29.png

  • 这里会弹出四个选项,问你想要用Fastlane做什么?这四个选项的意思分别是:
  1. 自动截屏
  2. 自动发布beta版本用于TestFlight
  3. 自动的App Store发布包
  4. 手动设置项目
  • 这里我直接选择3,自动配置。然后需要选择Scheme,因为我是通过Scheme配置的多环境,所以这里选择比较多

截屏2021-11-14 下午4.45.58.png

  • 选择完之后就是需要输入开发者账号的邮箱,接着发送验证码,输入验证码。登录成功后会提示你是否需要下载你的App的metadata,点y等待就可以了。成功之后在工程目录下就会发现多了几个文件

截屏2021-11-14 下午6.37.36.png

  • 点击进入fastlane目录

截屏2021-11-14 下午6.39.21.png

  • 这几个文件其中metadata和screenshots分别对应App元数据和App Store的应用截图

Appfile主要存放App的app_identifier、apple_id、itc_team_id、team_id

截屏2021-11-14 下午6.41.49.png

Fastfile文件是需要我们配置的文件,这个里面默认配置了一个打包App Store的lane

截屏2021-11-14 下午6.44.02.png

fastlane的使用

我们还可以自定义一些lane,在lane里面添加一些需要用的action,这里我添加了一个在debug下打包的lane。 这里上传蒲公英是需要添加插件的,在终端运行fastlane add_plugin pgyer,就可以把打好的包上传蒲公英。fir也是同理。

截屏2021-11-14 下午6.54.33.png

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 Succeededxcodebuild等等。然后一直等待,最终会出现fastlane.tools finished successfully,就打包成功了也上传到蒲公英了。

截屏2021-11-14 下午7.09.59.png

截屏2021-11-14 下午7.11.15.png

配置通知机器人,蒲公英打好包是可以通知企业微信、钉钉和飞书的。选择会使用通知的App,然后根据需求进行Webhook设置。

截屏2021-11-16 下午2.00.42.png

截屏2021-11-16 下午2.12.23.png

我这里设置的是在钉钉群通知添加的机器人进行通知,找到机器人的Webhook,然后添加到蒲公英的Webhook就可以了。这样设置完,只要正常打完包机器人就会在钉钉群进行通知了。

截屏2021-11-16 下午2.01.48.png

如果出现一只卡在**$ bundle update**,则需要更换RubyGems镜像

#替换镜像
$ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
#执行查看当前镜像,是否替换成功
$ gem sources -l
https://gems.ruby-china.com
复制代码

截屏2021-11-14 下午4.22.56.png

配合Jenkins实现自动化构建

这样打包每次都需要在终端输入命令运行,这些其实也可以交给Jenkins来做。Mac如何安装Jenkins这篇文章写的很详细juejin.cn/post/702579… 。如何初始化Jenkins可以参考这篇文章juejin.cn/post/702801… 。配置完源码管理git之后,因为fastlane是ruby语言编写的,所以需要增加构建环境RVM,不然没法运行。安装这个插件

截屏2021-11-14 下午6.01.48.png

通过ruby -v获取ruby的版本,填写在这里

截屏2021-11-14 下午7.23.10.png

然后增加构建步骤,执行shell脚本,echo fastlane test desc:测试打包,``里面写执行的语句。然后保存就可以构建了。最终会和在终端执行命令是一样的,这样就可以随时构建而不是手动构建打包了。

注意

因为初始化fastlane是在工程目录下的,工程目录是多了几个文件的,在提交git的时候可以选择忽略这几个文件

截屏2021-11-15 上午10.10.35.png

match来管理代码签名

match是fastlane提供的一种全新的管理证书的方式,它使团队所有成员共享一份证书和描述文件,以减少不必要的证书创建,描述文件失效等问题。

  • match使所有成员共享同一份证书和描述文件,大大减少管理和维护的成本,并有着完善的同步机制。

  • 因为match将所有的证书和描述文件存放于你的git仓库中,所以只要拥有git仓库的访问权限,安装了fastlane,那新设备可以迅速投入到工作中。

  • 简化请求证书,生成描述文件,注册设备等工作,这些全部可以在终端通过命令进行操作。

关于如何操作match,可以参考这个配置www.jianshu.com/p/596294052…

注意

一定要注意Jenkins里面配置的ruby的版本,是不是当前正在使用的ruby版本,并且fastlane是不是在这个版本上安装的。ruby是脚本语言,一般出问题就是路径、版本的问题。

卸载fastlane

brew uninstall fastlane

至此完成了一整套的构建流程

分类:
iOS
标签: