iOS+Fastlane自动打包、发布测试、消息通知,完美结合!iOS+Fastlane自动打包、发布测试、消息通知,完美结合!

2021-12-08 10:04:28 浏览数 (1)

iOS打包烦不烦?偶尔一次还好,但是一天三五次测试打包肯定让人烦,不信你试试!

曾经我以为自动化打包很没必要,所以一直都是Xcode中规中矩的打包操作然后发布;而如今我正在经历着一天之中反复的测试、回归,有时一天打包发布个三五次,不断的来回告诉测试妹子打包发布了去下载吧,有时妹子也烦。

同时不断的重复性的build、 archive、导出、发布测试平台实属枯燥。再加上电脑卡、反应慢,打个包一二十分钟过去了也耽误不少时间,所以自动化打包迫在眉睫。

所以我们要实现一行命令自动打包、发布、然后自动发消息通知测试。

最后我们选择了Fastlane 、 蒲公英发布测试;

现在我们只需要一行命令搞定让枯燥的打包自动进行,自动发布,自动发消息通知测试,而且整过流程用时几分钟就能搞定,比以前大大的少了很多,真是大大的提高工作效率;

我们操作路线: Fastlane自动打包 -> 蒲公英发布测试 ->钉钉

  • Fastlane 实现自动打包,自动发布到蒲公英平台
  • 蒲公英:App发布平台;
  • 钉钉,建立的开发测试群,每次自动打包发版后,系统机器人就会自动提示如下:

是不是很方便?群里的每个人都知道了,再也不用我们去通知了!

接下来就按步骤去实现它吧。。。

Fastlane安装与配置

Fastlane基于ruby环境自动化工具集,它不是一个工具,它是一系列的工具的集合,基本上涵盖了打包,签名,测试,部署,发布,库管理等等移动开发中涉及到的内容。 同时该套件也支持与 Jenkins 、CocoaPods、xctools 等其他第三方工具的集成。

  • 1、安装 Xcode command line tools:

xcode-select --install

安装过会提示已经安装;

代码语言:javascript复制
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
  • 2、安装Fastlane

sudo gem install fastlane

代码语言:javascript复制
Successfully installed fastlane-2.193.1
Parsing documentation for fastlane-2.193.1
Done installing documentation for fastlane after 5 seconds
1 gem installed
  • 3、fastlane 初始化

fastlane init

cd 打开工程所在目录,执行fastlane init出现如下提示:

代码语言:javascript复制
[13:21:46]: What would you like to use fastlane for?
1.   Automate screenshots
2. ✈️  Automate beta distribution to TestFlight
3.   Automate App Store distribution
4.   Manual setup - manually setup your project to automate your tasks

选择4 ,手动设置工程文件;然后一路enter

然后可看到工程目录下多了几个文件:

其中Appfile、Fastfile就是我们需要修改的文件;

  • Appfile:App相关的信息,写以下三项就可以:
代码语言:javascript复制
app_identifier "com.XX.XX"
apple_id "appid"
team_id "teamid"
  • Fastfile:描述打包相关的配置信息,初始内容如下:
代码语言:javascript复制
default_platform(:iOS)
platform :iOS do
  desc "Description of what the lane does"
  lane :custom_lane do
    # add actions here: https://docs.fastlane.tools/actions
  end
end

一个lane可理解为就是一个任务,我们打包发布到蒲公英是一个任务,打包发布到App Store也是一个任务; lane中可添加多个action,也就是具体的操作,比如打包方法操作是一个action,发布蒲公英操作也是一个action;

Fastlane本身自有的一些lane,可以在不同的 阶段做一些额外的操作:

before_all,就是在执行一次脚本之前首先执行的代码,我们可以在这里面执行一些公共的东西,比如git_pull,cocoapods。

after_all, 成功结束之后,处理共有的后置逻辑。

before_each,每次执行 lane 之前都会执行一次。

after_each,每次执行 lane 之后都会执行一次。

error,在执行上述情况任意环境报错都会中止并执行一次。

我要发布到蒲公英,所以完整的配置如下:
代码语言:javascript复制
default_platform(:iOS)
platform :iOS do
  lane :hs_test do
    # add actions here: https://docs.fastlane.tools/actions
    gym(
          clean: true,
          output_directory: './fastlane/build',
          output_name:"XX.ipa",
          scheme: 'XXX',
          configuration: 'Debug',###########
          # sdk:"iOS 12.0",
          # archive_path:"./fastlane/Archive",
          include_symbols:true,
          export_options: {
            method: 'development',#测试包
            provisioningProfiles: {
                "com.xxxx.xxx" => "20210906_dev" #测试打包描述文件
            },
          }
    )
    
    updateVersionDes = "提到蒲公英的版本更新信息;"
    pgyer(
        api_key: "蒲公英API Key", 
        user_key: "蒲公英user_key"
        update_description: updateVersionDes
    )
    end
end

然后再终端中输入

代码语言:javascript复制
fastlane hs_test (可理解为就是我们的任务名)

然后剩下的就不用我们管了,它会自动的帮我们处理余下的所有工作;

参数解释:

  • gym:fastlane 封装的打包方法、会自动处理打包、签名等操作; 配置项 clean:每次执行前是否清空工程; output_directory:输出文件目录 output_name:App名字’ scheme:App scheme configuration:The configuration to use when building the app. Defaults to 'Release' export_options:导出时配置项,及发布证书相关;

我用到的不多,其他参数还很多具体参看官方文档吧。

至此关于Fastlane 配置完成了,现在就可以愉快的打包了,然后在工作目录中看到生成的IPA包。

蒲公英设置

蒲公英支持Webhook机制,可以将事件消息通知分发出去;所以当我们发布新版本时可以给钉钉或微信发送消息,通知App版本更新;

打开指定的应用,选择【内测分发】-【Webhook设置】创建新的Webhook

钉钉设置

打开钉钉群【设置】-【智能群助手】-创建机器人

复制Webhook URL https://oapi.dingtalk.com/robot/send?access_token=000351XXXXXXXXXX,到蒲公英Webhook URL ;

至此所有配置算是完成了,现在我们就可以实现一行命令打包,然后去逍遥自在了_;

APP自动化方面操作功能很强大,能做的还有很多,今天只是初步实现测试环境自动化打包,更高级的用法还有待继续摸索。

0 人点赞