UNPKG

appium

Version:
56 lines (38 loc) 3.94 kB
# 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](http://paulhammant.com/2013/04/05/what-is-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,基本流程如下所示: 1. 所有 PRs 都提交到 `master` (aka `trunk`). 2. 由发布工程师(Release engineer,简称RE)来主导发布行为。 当发布分支已经准备好共享(“Beta”状态或更好)时,RE将创建一个新的分支v[Major].[Minor].[Patch]-branch。 3. PRs 持续提交到 `master`. 4. 如果有修复相关的发布提交到 `master`, RE将这些提交到发布分支。 5. 发布分支可以修改与后续补丁修补程序发布。 这使得团队可以小心地将小型变更集放在一起,以便快速发布。修复也可以在需要时被并入以前的分支。 6. 冲洗,重复。 开发人员可以随他们的意愿维护他们开发中的分支,这些仅是个人使用。但所有“官方”分支机构均应符合上述规定。 ### 例如 1. 今天 6 月 1 日, Appium 团队计划于7月15日发布 20.1-beta,8 月 1 日发布全面的 20.1 版本。 2. 在接下来的六个星期里,这个团队将他们的代码提交到 `master`. 3. 7月15日,执行 RE 创建 20.1-branch。第一个节点被标记为 “20.1.0 Beta”。 4. 一个团队成员开始修复测试版中的错误。这些修复会被提交到 `master`. 5. 其他贡献者开始按计划提交代码到 `20.2` 中去。这些内容也会被提交到 `master` 6. RE把修复的内容cherry picks到 `20.1-branch`, 并保留 `master` 的其他变更。 7. 该团队庆祝 8 月 1 日发布的所有测试版本都已修复。 8. RE 标签的 HEAD 20.1-branch 为 20.1.0 发布版本。 9. 几周后,发现 20.1.0 存在崩溃,用户现在需要修复。 10. 执行 RE 将主机的崩溃修复程序拉入 20.1-branch,将 HEAD 标记为 20.1.1 并发布修补程序。 11. 一旦 20.2 发布完毕,循环就会重复。 本文由 [大东](https://testerhome.com/Anikikun) 翻译,由 [lihuazhang](https://github.com/lihuazhang) 校验。