实战:如何高效进行App灰度&全量发布
共 12500字,需浏览 25分钟
·
2024-07-15 08:05
目录
一、背景
二、量化数据
1.版本报告
2.季度报告
三、优化方向
四、调整发布节奏
五、双端提升发布系统自动化能力
1.自动创建发布计划
2.打包/灰度/全量前卡口
3.App打包前置依赖提醒
4.自动打包
5.测试回归催收
6.事件订阅
7.Android应用市场上架监控
8.iOS定制化苹果商店
六、总结
得物的发布采用固定的双周迭代,在此基础上如有紧急的需求可以申请中间插入单周迭代版本,在以往的迭代发布过程中从开始准备灰度发布事宜到主要应用市场上架时间跨度较长,站在业务的角度像AB、埋点、新特性反馈的时间太长。
最近我们针对发布流程做了整个链路的优化,通过调整发布节奏、提升双端发布系统自动化能力等措施,帮助业务触达用户效率(每版本提前1天),下文将详细讲述此过程。
发布过程中涉及的不同职能的业务域较多,信息不透明、无法从全局视角了解整体发布情况,因此想要做优化首先需要量化发布数据,主要的作用包括如下:
实时监控:帮助团队实时监控灰度发布的进度和效果。通过数据分析,可以了解不同版本在不同阶段的表现,及时发现并解决问题,确保发布过程顺利进行。
效果评估:可以评估不同灰度发布策略的效果。比如可以根据数据分析结果调整灰度量、时间等参数,以提高发布效率和质量。
问题诊断:帮助团队快速诊断和定位发布过程中出现的问题。通过数据分析,可以找出导致问题的原因,有针对性地进行修复和优化。
持续优化:通过不断积累和分析发布数据,团队可以发现发布过程中的潜在改进空间,持续优化发布流程和策略。量化数据的作用在于指导团队进行持续改进,提升灰度发布效率和成功率。
综上所述,量化发布数据在灰度发布效率提升项目中扮演着至关重要的角色,可以帮助团队监控、评估、诊断和优化发布过程,从而实现更高效的灰度发布。
我们对灰度的理解是用时间来换取减少潜在问题造成的影响面,好的质量意味着较少的灰度时间,反之效率的提升也能为应对潜在的质量问题提供更多的时间buffer,因此量化数据围绕着“质量”、“效率”两个关键字展开,每个迭代记录各阶段细化到具体的业务域的关键时间点、异常事件等,以版本报告、季度报告的形式呈现出来。
版本报告
灰度时间: Android: 在发布系统上操作开始灰度时间(老版本用户可展示升级弹窗提示的时间),iOS: AppStore审核通过后操作开始放量1%的时间。
提供测试包时间: 提供给测试用作回归功能的包出包时间。
测试可开始测试回归时间: MAX(服务端发布完成时间,客户端提供测试包时间)(QA依赖服务端功能发布完成和客户端提供灰度包)
季度报告
-
版本趋势
-
季度汇总&各团队表现情况
-
灰度轮次安装量分布
-
版本趋势
-
各团队表现情况 汇总这个季度内每个业务域所属问题在灰度期间所有崩溃的设备数,与上个季度相比的优劣化情况。
-
灰度轮次Crash对比 对比各轮次Crash影响用户数分布情况,一灰后占比低说明一灰问题修复情况较好。
-
各职能域累计影响时长对比
-
版本趋势
-
各团队表现情况 对比不同域在这个季度累计的延期时长,以及相邻季度的优劣化情况。
-
提测延期版本趋势
-
各团队表现情况 业务域组件集成延期,对产生两种类型的影响,第一种: 尚未提测会导致App打包延期而导致提测延期,第二种: 如果测试提出的问题修复过晚,会影响到灰度。
-
版本趋势
-
各团队表现情况
-
发布类型分布对比
-
版本趋势 每个迭代发布全量版本数。
-
季度对比
-
全年的对比
-
版本趋势: 每个版本苹果审核花费的时长
-
各团队灰度节奏不一致: 服务端发布、客户端代码集成、测试回归等这些同类型的任务中,不同业务域节奏不一致。 为同类型任务划定出一个明确的完成时间点,使同类型的任务尽可能的并行进行,例如为服务端发布完成和提供测试包时间约定一个相同的时间点完成,QA测试回归有前面两者的依赖约定好固定的完成时长,较大周期的任务时间点确认好了以后,在细化子任务的时间点,例如提供测试包需依赖客户端业务组件集成完成、App构建task完成,进而可以根据App构建所需时长反推出客户端代码集成需在某个时间点完成(等同于开始构建测试包时间)。 -
前后任务之间存在时间上的空白(任务前置依赖满足后任务开始时间滞后) -
提升工作流平台自动化能力,检测任务前置依赖完成情况自动化的触发 -
需人工进行的任务在固定的时间点或者前置依赖完成后增加提醒功能 -
提供事件订阅机制,可以让大家接收自己关注的事件通知,比如发布计划创建、App开始构建、某个应用市场上架等 -
质量问题发现滞后 -
建立打包/灰度/全量前的卡口机制,线下环节或上次灰度中发现的问题在打包前必须标记已完成 -
要求各域在首次灰度时打开需验证功能的开关 -
像版本号这样的版本参数,在建发布计划时自动推断出来填充表单
自动创建发布计划
-
自动推断版本参数: 防止手动填写错误,根据得物App版本号规则和上一次发布的版本参数,自动推断此版本的versionName、versionCode、buildNumber等参数。 -
首个版本自动创建发布计划: 首个版本的计划App打包时间、计划灰度时间是固定的,在合适的时间点自动化的创建出来可以防止版本owner忘记操作。
打包/灰度/全量前卡口
App打包前置依赖提醒
-
线下Crash提醒 测试环境的包出现崩溃时会有上报,我们的流程要求灰度发布前必须全部解决掉,在灰度前3天开始推送提醒,在灰度当天在大群中提醒。
-
组件集成提醒(业务组件集成、snapshot组件release)
自动打包
-
首个灰度版本前置依赖满足后自动打包: 首个灰度版本打包前置依赖任务和检查项较多。 -
计划发布时间打包: 到了预设的发布时间自动触发一次App构建。 -
KOL渠道自动打包: 为了防止应用宝抓包造成渠道错乱,新版本一般是等待应用宝审核通过后,版本owner主动触发KOL渠道包的构建,监控应用宝上架自动触发。
测试回归催收
事件订阅
Android应用市场上架监控
iOS定制化苹果商店
「点击关注,Carson每天带你学习一个Android知识点。」
最后福利:学习资料赠送
-
福利:本人亲自整理的「Android学习资料」 -
数量:10名 -
参与方式:「点击右下角”在看“并回复截图到公众号,随机抽取」
点击就能升职、加薪水!