选择具有DevOps思维模式的分支策略

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

是否打算在Azure DevOps中使用 Team Foundation 版本控制 (TFVC) DevOps? 你可能有几个问题,例如:

  • 如何实现决定正确的分支策略?
  • 是否有有效的DevOps策略?
  • 如何实现支持具有单个或多个版本的应用程序?

TFVC 是一种集中式版本控制系统,用于维护代码并使团队更高效。 它提供协作和一致的代码共享、发布和评审功能。

保持简单!

通过采用有效的分支策略,你将:

  • 培养DevOps文化
  • 促进协作流并提高工作效率
  • 使团队能够花更多的时间开发和减少管理代码的时间

若要接受DevOps,请务必保持分支策略简单,并努力实现高质量。 一些建议:

  • 从简单的策略开始,根据需要进行发展
  • 对分支使用一致的命名约定
    • 个人执行的工作的功能/用户名/说明 - 示例 ,features/sandra/sdk-java
    • 特定于工程 bug 的工作的 bugfix/username/bugid - 例如 bugfix/takashi/707
    • 计划版本的 releases/version - example , releases/V1.00
  • 经常反向集成 (RI) 并合并到主分支
  • 鼓励一致的代码评审 - 垃圾传入和垃圾
  • 使用:

从简单的分支策略开始

创建用于标识 可交付 发布单元的源代码管理结构。 可释放单元的概念是这一策略的基础部分,史蒂夫·圣让描述如下:

  • 版本控制与传递的物理单元。
  • 支持分支和发布模型的主要单元。
  • 可以位于 Suite、Application-或 Component-level。
  • 对于套件,所有应用程序都必须同时进行版本和修补。 例如,Microsoft Word和Excel是Microsoft Office套件的一部分。 Visio不是,因为它可能独立于Microsoft Office套件的其余部分发布或修补。
  • 在 TFVC 中,这将是团队项目节点下的根节点。
  • 可以等同于 Git 中的存储库

通常,必须仅支持一个生产版本,同时对新功能进行并行缺陷更正和开发。 典型示例包括网站、企业业务线应用程序和临时工具。

从简单的 仅主 分支策略开始。

initial branch diagram

使用每个签入到主分支、运行自动测试(如果成功)将版本部署到开发 (开发) 环境中自动触发生成。

分支 生成 环境 备注
Main CI_Bld Dev 每次签入到 main 时触发

完成发布周期后,创建 发布 分支。 使用发布分支稳定发布,并在主版本中继续开发下一个版本。 反向集成 (RI) ,并经常将验证的 bug 修复与主分支合并,以最大程度地减少整体技术债务。

Version 1.0 is released

自动执行生成和发布,使其:

  • 每次签入到发布分支时触发
  • 运行自动测试
  • 部署到开发和其他环境
分支 生成 管道 备注
Main CI_Bld Dev 每次签入到 main 时触发
V1.00 RC_Bld 开发 - QA ->> UAT - 过渡 ->> Prod 每次签入以释放时触发

当版本 2 成为候选版本时,可以更新现有的 RC 生成管道以指向 V2.00 分支。 它现在将像 V1.00 在当前版本时一样生成和发布。

分支 生成 管道 备注
Main CI_Bld Dev 每次签入到 main 时触发
V2.00 RC_Bld 开发 - QA ->> UAT - 过渡 ->> Prod 每次签入以释放时触发
V1.00 Hotfix_Bld 修补程序 - 暂存 ->> Prod 每次签入修补程序时触发

根据需要扩展分支策略

当需要支持多个生产版本(例如 Word 等商业解决方案)时,可以扩展分支策略。

对于需要支持的每个已完成发布周期,请使用 功能隔离创建新的发布分支并继续进行下一版本开发。 请注意反向集成 (RI) 从 v1.0 和 v2.0 合并到 main。 它们表示发布到生产的 bug 修复。

Version 2.0 is released

通过使用 简单的 分支策略并采用 一致的命名约定,你将能够支持:

  • 具有一个或多个受支持版本的应用程序
  • 新功能的持续开发
  • 持续向用户交付价值

来自字段的清单和课程

清单

  • 根据需要简化分支复杂性和扩展分支复杂性
  • 将代码组织到可交付单元中
  • 对分支使用一致的命名策略
  • 每次签入时生成
  • 使用封闭检查和自动化测试创建 CI/CD 管道

从领域吸取教训 - 要避免的事项

  • 避免去分支疯狂!
    • 合并 更改具有复杂性和成本
    • 无需为每个环境创建单独的分支
  • 避免使用 樱桃选取 使代码进入生产环境
  • 不要尝试使用工具解决 人员处理 问题