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

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

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

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

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

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

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

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

  • Fastlane 实现自动打包,自动发布到蒲公英平台

  • 蒲公英:App发布平台;

  • 钉钉,建立的开发测试群,每次自动打包发版后,系统机器人就会自动提示如下:

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

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

Fastlane安装与配置

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

  • 1、安装 Xcode command line tools:

xcode-select --install

安装过会提示已经安装;

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

sudo gem install fastlane

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 出现如下提示:

[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

3.png

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

4.png

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

  • Appfile:App相关的信息,写以下三项就可以:
app_identifier "com.XX.XX"
apple_id "appid"
team_id "teamid"
复制代码
  • Fastfile:描述打包相关的配置信息,初始内容如下:
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,在执行上述情况任意环境报错都会中止并执行一次。

我要发布到蒲公英,所以完整的配置如下:
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
复制代码

然后再终端中输入

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:导出时配置项,及发布证书相关;

我用到的不多,其他参数还很多具体参看: gym方法及参数配置-http://docs.fastlane.tools/actions/gym/#gym

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

蒲公英设置

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

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

钉钉设置

打开钉钉群【设置】-【智能群助手】-创建机器人 8.png 9.png 复制Webhook URL https://oapi.dingtalk.com/robot/send?access_token=000351XXXXXXXXXX,到蒲公英Webhook URL ;

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

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

Hi ,我是[Light413]在上海一名iOS开发者。这里就是我的阵营,我喜欢在这里学习,在这里分享。以后文章会不断的更新,介绍关于iOS开发学习总结 , 介绍APP开发中感悟记录总结。喜欢就点个赞吧。

猜你喜欢

转载自juejin.im/post/7008553785672859656