

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为多账户环境实施 Gitflow 分支策略 DevOps
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments"></a>

*迈克·斯蒂芬斯、斯蒂芬 DiCato、Abhilash Vinod 和 Amazon Web Services 的 Tim Wondergem*

## Summary
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-summary"></a>

管理源代码存储库时，不同的分支策略会影响开发团队使用的软件开发和发布流程。常见分支策略的示例包括 Trunk、Gitflow 和 Flow。 GitHub 这些策略使用不同的分支，并且在每种环境中执行的活动也各不相同。正在实施 DevOps 流程的组织将受益于可视化指南，以帮助他们了解这些分支策略之间的区别。在组织中使用此视觉对象可以帮助开发团队协调工作并遵循组织标准。此模式提供了该视觉对象，并描述了在组织中实施 Gitflow 分支策略的过程。

这种模式是关于为具有多个 AWS 账户分支机构的组织选择和实施 DevOps 分支策略的文档系列的一部分。该系列旨在帮助您从一开始就应用正确的策略和最佳实践，以简化您的云体验。Gitflow 只是您的组织可以使用的一种潜在分支策略。本文档系列还涵盖了 Tr [unk](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-trunk-branching-strategy-for-multi-account-devops-environments.html) 和 [GitHub Flow](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html) 分支模型。如果你还没有这样做，我们建议你先查看[为多账户 DevOps 环境选择 Git 分支策略](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/)，然后再按此模式实施指南。请务必谨慎选择适合组织的分支策略。

本指南提供了图表，其中显示了组织如何实施 Gitflow 策略。建议您查看《Well-Ar [ DevOps chitec AWS ted 指南》，以查看最佳实](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)践。此模式包括 DevOps 流程中每个步骤的推荐任务、步骤和限制。

## 先决条件和限制
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-prereqs"></a>

**先决条件**
+ Git，[已安装](https://git-scm.com/downloads)。这可用作源代码存储库工具。
+ Draw.io，[已安装](https://github.com/jgraph/drawio-desktop/releases)。此应用程序可用于查看和编辑图表。
+ （可选）Gitflow 插件，[已安装](https://github.com/nvie/gitflow)。

## 架构
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-architecture"></a>

**目标架构**

下图的使用方法与[旁氏表](https://en.wikipedia.org/wiki/Punnett_square)类似（维基百科）。您可以将垂直轴上的分支与水平轴上的 AWS 环境对齐，以确定在每个场景中要执行的操作。这些数字表示工作流中各项操作的顺序。此示例可引导您了解从特征分支到在生产环境中部署的整个过程。

![每个分支和环境中的 Gitflow 活动的旁氏表。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/1dee2a06-cc54-4797-b9a9-78b6685edd33/images/d8be49bf-dca1-4892-ac4c-11996a7258c2.png)


有关 Gitflow 方法中的 AWS 账户、环境和分支的更多信息，请参阅[为多账户环境选择 Git 分支策略](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/)。 DevOps 

**自动化和扩展**

持续集成和持续交付（CI/CD) is the process of automating the software release lifecycle. It automates much or all of the manual processes traditionally required to get new code from an initial commit into production. A CI/CD pipeline encompasses the sandbox, development, testing, staging, and production environments. In each environment, the CI/CD pipeline provisions any infrastructure that is needed to deploy or test the code. By using CI/CD, development teams can make changes to code that are then automatically tested and deployed. CI/CD管道）还通过强制执行一致性、标准、最佳实践以及功能接受和部署的最低接受程度，为开发团队提供管理和护栏。 有关更多信息，请参阅[上的 “练习持续集成和持续交付” AWS](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html)。

AWS 提供了一套旨在帮助您构建 CI/CD 管道的开发人员服务。例如，[AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)是一项完全托管的持续交付服务，可帮助您实现发布管道的自动化，从而实现快速可靠的应用程序和基础设施更新。 [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)编译源代码、运行测试和生成 ready-to-deploy软件包。有关更多信息，请参阅[上的开发者工具 AWS](https://aws.amazon.com/products/developer-tools/)。

## 工具
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-tools"></a>

**AWS 服务和工具**

AWS 提供了一套开发者服务，你可以用它们来实现这种模式：
+ [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html) 是一项高度可扩展的托管式构件存储库服务，有助于您存储和共享用于应用程序开发的软件包。
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 是一项完全托管式构建服务，可编译源代码、运行单元测试和生成部署就绪的构件。
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html)自动部署到亚马逊弹性计算云 (Amazon EC2)、本地实例、 AWS Lambda 函数或亚马逊弹性容器服务 (Amazon ECS) 服务。
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 可帮助您快速对软件发布过程的不同阶段进行建模和配置，并自动执行持续发布软件变更所需步骤。

**其他工具**
+ [Draw.io 桌面](https://github.com/jgraph/drawio-desktop/releases)是用于制作流程图和图表的应用程序。代码存储库包含 Draw.io 的 .drawio 格式模板。
+ [Figma](https://www.figma.com/design-overview/) 是一款专为协作而打造的在线设计工具。代码存储库包含 Figma 的 .fig 格式模板。
+ （可选）[Gitflow 插件](https://github.com/nvie/gitflow)是 Git 扩展的集合，它们可为 Gitflow 分支模型提供高级存储库操作。

**代码存储库**

此模式下图表的源文件可在 GitFlow存储库的 GitHub [Git 分支策略](https://github.com/awslabs/git-branching-strategies-for-multiaccount-devops/tree/main/gitflow)中找到。其包括采用 PNG、draw.io 和 Figma 格式的文件。您可以修改这些图表，以为组织的流程提供支持。

## 最佳实践
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-best-practices"></a>

遵循 Well-Architect [AWS e DevOps d 指南和为多账户环境](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)[选择 Git 分支](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/)策略中的最佳实践和建议。 DevOps 这些最佳实践可以帮助您有效地实施基于 Gitflow 的开发、促进协作、提高代码质量以及简化开发流程。

## 操作说明
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-epics"></a>

### 查看 Gitflow 工作流
<a name="reviewing-the-gitflow-workflows"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 查看标准的 Gitflow 流程。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps 工程师 | 
| 查看修补程序 Gitflow 流程。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps 工程师 | 
| 查看错误修复 Gitflow 流程。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps 工程师 | 

## 问题排查
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-troubleshooting"></a>


| 问题 | 解决方案 | 
| --- | --- | 
| 分支冲突 | Gitflow 模型可能出现的一个常见问题是，生产环境需要修补程序，但较低级别的环境中也需要进行相应更改，因为另一个分支中同样存在要修改的资源。我们建议您一次仅激活一个发布分支。如果您一次有多个分支处于活动状态，则环境中的更改可能会发生冲突，并且您可能无法将分支推进到生产中。 | 
| 合并 | 应尽快将版本合并回主分支并进行开发，以便将工作整合回主分支。 | 
| 压缩合并 | 只有在从 `feature` 分支合并到 `develop` 分支时才会使用压缩合并。在较高的分支中使用压缩合并，可能会导致在向较低级别分支合并更改时遇到困难。 | 

## 相关资源
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-resources"></a>

本指南不包括针对 Git 的培训；但是，如果您需要这种培训，则可以在互联网上找到许多可用的高质量的资源。我们建议从 [Git 文档](https://git-scm.com/doc)网站开始。

以下资源可以帮助您在 AWS Cloud中完成 Gitflow 分支之旅。

**AWS DevOps 指导**
+ [AWS DevOps 指南](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)
+ [AWS 部署管道参考架构](https://pipelines.devops.aws.dev/)
+ [什么是 DevOps？](https://aws.amazon.com/devops/what-is-devops/)
+ [DevOps resources](https://aws.amazon.com/devops/resources/)

**Gitflow 指引**
+ [原始 Gitflow 博客](https://nvie.com/posts/a-successful-git-branching-model/)（Vincent Driessen 博客文章）
+ [Gitflow 工作流](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)（Atlassian）
+ [Gitflow 开启 GitHub：如何将 Git Flow 工作流程与 GitHub 基于 Repos 的存储库一起使用](https://youtu.be/WQuxeEvaCxs)（视频）YouTube 
+ [Git Flow 初始化示例](https://www.youtube.com/watch?v=d4cDLBFbekw)（YouTube 视频）
+ [Gitflow 发布分支从头到尾（视频](https://www.youtube.com/watch?v=rX80eKPdA28)）YouTube 

**其他资源**

[十二要素应用程序方法论](https://12factor.net/)（12factor.net）