

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

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

*Mike Stephens 和 Rayjan Wilson，Amazon Web Services*

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

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

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

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

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

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

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

**目标架构**

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

![\[每个分支和环境中的中继活动的旁氏表\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/5df23e4d-84fe-4ab3-a54f-96b6406abc57/images/ad549ef4-90ad-47c1-bd01-f21d6ce5511a.png)


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

**自动化和扩展**

持续集成和持续交付（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-trunk-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) – 用于制作流程图和图表的应用程序。
+ [Figma](https://www.figma.com/design-overview/) 是一款专为协作而打造的在线设计工具。代码存储库包含 Figma 的 .fig 格式模板。

**代码存储库**

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

## 最佳实践
<a name="implement-a-trunk-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 这些最佳实践可以帮助您有效地实施基于中继的开发、促进协作、提高代码质量以及简化开发流程。

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

### 查看中继工作流
<a name="reviewing-the-trunk-workflow"></a>


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

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


| 问题 | 解决方案 | 
| --- | --- | 
| 分支冲突 | 中继模型可能出现的一个常见问题是，生产环境需要修补程序，但 `feature` 分支中也需要进行相应更改，因为该分支中同样存在要修改的资源。我们建议您经常将来自 `main` 更改合并到较低的分支中，以避免在合并到 `main` 时发生重大冲突。 | 

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

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

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

**AWS DevOps 指导**
+ [AWS DevOps 指南](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)
+ [AWS Deployment Pipeline Reference Architecture](https://pipelines.devops.aws.dev/)
+ [什么是 DevOps？](https://aws.amazon.com/devops/what-is-devops/)
+ [DevOps resources](https://aws.amazon.com/devops/resources/)

**中继指引**
+ [基于中继的开发](https://trunkbaseddevelopment.com/)

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