

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

# 试 CI/CD 金石：你的管道是否完全是 CI/CD？
<a name="introduction"></a>

*Steven Guggenheimer 和 Ananya Koduri，Amazon Web Services（AWS）*

*2023 年 8 月*（[文档历史记录](doc-history.md)）

您的管线是否已实现自动化？ 这是一个简单的问题，但许多组织给出的答案却过于片面。答案蕴含的复杂性远非*是*或*否*所能概括。

技术创新日新月异，有时组织可能很难跟上步伐。这项新技术是昙花一现，还是会成为下一个主流？ 我应该彻底改革现有的做法，还是应该静观其变？ 通常，当明确某项技术是大势所趋时，企业往往已陷入被动追赶的境地。*持续集成和持续交付*（CI/CD）已成为长期趋势，但并非一直如此。许多人花了很长时间才被说服，有些人仍持观望态度。

CI/CD is the process of automating the source, build, test, staging, and production stages of the software release process, and it is commonly described as a pipeline. Today, the cost savings and speed of CI/CD自动化使大多数组织相信了它的价值。但过渡到这种新方法并非易事。您需要确保员工接受过正确的培训，需要升级一些资源，然后需要不断测试、测试、再测试。工作量巨大。大多数情况下，您需要逐步进行这些变更，以帮助组织适应。

本文档的目的是定义拥有完整 CI/CD 流程意味着什么。它提供了一种工具来评估您自身的流程，并为尚未实现的流程提供前进方向。这条前进的道路很少能一蹴而就。相关流程很复杂，取决于许多因素，包括当前员工的技能集以及当前基础设施需求。我们建议您分清轻重缓急，小幅、循序渐进地进行改进。

## 目标
<a name="objectives"></a>

实施本指南中的建议可能带来以下潜在优势：
+ **效率** — 全面 CI/CD 部署过程可以减少复杂性、减少工作量，并减少花费在调试、执行手动流程和维护上的无数时间。有关更多信息，请参阅[持续交付的优势](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/benefits-of-continuous-delivery.html)。根据一[篇TechAhead 博客文章](https://www.techaheadcorp.com/blog/how-ci-cd-save-app-development-time/)，该 CI/CD 流程的实施估计可以节省20％的时间、精力和资源。
+ **成本削减**：根据 [Forbes Insight 报告](https://www.forbes.com/sites/forbesinsights/2017/03/16/how-it-service-management-delivers-value-to-the-digital-enterprise/)，“四分之三的高管认为，相较于新项目开发或新举措，花费在持续维护和管理方面的时间、金钱和资源，正在影响其组织的整体竞争力。” 开发周期越短，您的组织就越有可能在正确的时间 time-to-market实现雄心勃勃的目标并抓住合适的机会。
+ **速度** — 通常，完整的CI/CD pipeline is able to release software changes to customers within a few hours. Especially in cases with quick fault isolations and small patch pushes, the CI/CD管道有助于缩短平均恢复时间 (MTTR)。有关更多信息，请参阅 [Reducing MTTR](https://docs.aws.amazon.com/whitepapers/latest/availability-and-beyond-improving-resilience/reducing-mttr.html)。
+ **安全** — 完全 CI/CD 管道还可以减少攻击的可能入口点并降低人为错误的风险，从而保护发布过程。全自动 CI/CD 管道带来的安全优势有助于避免数据泄露、服务中断等造成的代价高昂的后果。
+ **降低流失率**：当开发人员可以花更多的时间用来创建出色的功能，而不是陷入无休止的维护和调试循环时，他们会更加满意。对于组织而言，这意味着能够更长时间地吸引和留住顶尖人才。
+ **卓越的代码质量** — 开发人员以小批量方式将代码发布到共享存储库中，这使他们能够进行[并行测试](https://www.browserstack.com/guide/what-is-parallel-testing)（BrowserStack 博客文章）。他们并非各自为战，而是经常与团队共享构建成果，并协作识别关键错误。这为开发人员提供了支持，有助于防止不良代码进入生产环境。来自开发人员同行的支持有助于发布高质量版本，并推动组织发展。
+ **维护**：维护和更新是制作一款出色产品的关键部分。但是，不要在流量高峰时段关闭系统。您可以使用 CI/CD 管道在低使用率时段执行维护，从而最大限度地减少停机时间和对性能的影响。