

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

# CI/CD 管线的最佳实践
<a name="cicd-best-practices"></a>

以下是完全 CI/CD 管线的最佳实践：
+ **保护生产环境**：由于使用 IaC 几乎可以完成账户和环境维护所需的一切，因此重要的是通过限制控制台和编程访问尽一切努力来保护生产环境。我们建议仅允许少数用户（甚至零用户）访问。通过 AWS CloudFormation 部署 IaC 时，用户需要有限的权限。大多数权限都通过服务角色分配给 CloudFormation 服务。有关更多信息，请参阅 CloudFormation 文档中的[服务角色](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html)和 [Implementing policies for least-privilege permissions for AWS CloudFormation](https://docs.aws.amazon.com/prescriptive-guidance/latest/least-privilege-cloudformation/introduction.html)。
+ **为每个环境创建单独的账户**：通过为每个环境指定一个单独的账户，您可以简化部署过程并在账户级别创建精细的访问控制。当多个环境共享资源时，会降低环境作为独立单元的完整性。最好保持环境同步且彼此独立。这对于生产环境来说尤为重要，因为该账户中的所有内容都应被视为生产资源。
+ **将个人身份信息（PII）限制在生产环境**：无论是为了安全还是避免责任风险，都要尽可能保护 PII。在下层环境中，尽可能使用匿名化或样本数据，而不是复制生产环境中潜在的敏感数据。
+ **查看存储库中的代码**：完全 CI/CD 流程将管线的入口点减少为一个点，并且该单点应该得到保护。出于此原因，建议您在将功能分支合并到主分支之前，需要进行多次代码审查。这些代码审查可由任何合格的团队成员进行，但至少应有一名高级成员进行审查。该代码应由审查者严格进行测试。毕竟，修复管线中问题的最佳方法是避免引入问题。此外，在合并之前，请务必解决所有审查者提出的所有意见。解决方法可以是简单地解释为什么不需要更改，但是解决所有意见是一项重要的额外检查，有助于防止将问题引入管线。
+ **进行小规模且频繁的合并**：为了充分利用持续集成，最好将本地变更也持续推送到管线中。毕竟，如果本地环境也能跟上开发环境的步伐，那么保持同步对开发环境更有利。

有关 CI/CD 管线的更多最佳实践，请参阅《在 AWS 上练习持续集成和持续交付》**中的[最佳实践汇总](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/summary-of-best-practices.html)。