Appium 版本, 分支和发布模式
版本控制
1.3.6版本之后, Appium 使用语义版本控制: major | minor | patch | [-beta{N}]
. 例如, 1.4.1
or 2.4.0-Beta4
.
Major: API 突破性变化;新功能
Minor: 向后兼容的变化; 可能包含或不包括新功能
* Patch: 快速修复工程; 没有新功能
这使得 Appium 的版本与 NPM 生态系统中的其他主要项目一致。它也适用于下面描述的基于主干的开发模式。
分支和发布模式
Appium 使用 Trunk Based Development。正如 Paul Hammant 所说,
Trunk Based Development (TBD) 是所有开发人员(针对特定可部署单元)在源控制下提交到一个共享分支。那个分支俗称为 trunk。
⋯ 分支是为了发布而创建的。开发人员不得在共享的地方建立分支。只有发布工程师才能对这些分支进行 commit,并且实际上得去创建这些分支。如果有必要的话,发布工程师可能会 cherry-pick 一些提交到发布分支。
⋯ 发布分支将在短时间内被另一个发布分支替代,每个发布分支在创建时要从 trunk 中获取所有内容。在合并方面,只支持从主干到发布分支的 cherry-pick。
里程碑
我们根据版本控制和发布模式来设定 Appium 的里程碑. 下一个里程碑一直会是 Major.Minor 的发布。 与接下来要发布的 Major.Minor 版本不相干的产品缺陷修复和新功能,将会被积压到下一个以修复 BUG 或者新功能的命名分支上发布(即 Bugs 和 Features)。一般来说,我们每次的 minor 发布周期为 8 到 10 周一次。这包括大约一周的 Beta 测试和另外一周的修复和最终更改。 修补程序在 Major.Minor 版本之间根据需要发布(Major.Minor.Patch)。这样我们可以快速解决问题,同时最大限度地减少回归的风险。
Workflow
对于Appium,基本流程如下所示:
- 所有 PRs 都提交到
master
(akatrunk
). - 由发布工程师(Release engineer,简称RE)来主导发布行为。 当发布分支已经准备好共享(“Beta”状态或更好)时,RE将创建一个新的分支v[Major].[Minor].[Patch]-branch。
- PRs 持续提交到
master
. - 如果有修复相关的发布提交到
master
, RE将这些提交到发布分支。 - 发布分支可以修改与后续补丁修补程序发布。 这使得团队可以小心地将小型变更集放在一起,以便快速发布。修复也可以在需要时被并入以前的分支。
- 冲洗,重复。
开发人员可以随他们的意愿维护他们开发中的分支,这些仅是个人使用。但所有“官方”分支机构均应符合上述规定。
例如
- 今天 6 月 1 日, Appium 团队计划于7月15日发布 20.1-beta,8 月 1 日发布全面的 20.1 版本。
- 在接下来的六个星期里,这个团队将他们的代码提交到
master
. - 7月15日,执行 RE 创建 20.1-branch。第一个节点被标记为 “20.1.0 Beta”。
- 一个团队成员开始修复测试版中的错误。这些修复会被提交到
master
. - 其他贡献者开始按计划提交代码到
20.2
中去。这些内容也会被提交到master
。 - RE把修复的内容cherry picks到
20.1-branch
, 并保留master
的其他变更。 - 该团队庆祝 8 月 1 日发布的所有测试版本都已修复。
- RE 标签的 HEAD 20.1-branch 为 20.1.0 发布版本。
- 几周后,发现 20.1.0 存在崩溃,用户现在需要修复。
- 执行 RE 将主机的崩溃修复程序拉入 20.1-branch,将 HEAD 标记为 20.1.1 并发布修补程序。
- 一旦 20.2 发布完毕,循环就会重复。
本文由 大东 翻译,由 lihuazhang 校验。