CI 和 CD 是人们谈论 DevOps 和自动化时经常使用的两个重要术语。

有没有想过什么是持续集成Continuous Integration (CI) 或持续交付Continuous Delivery (CD)?持续部署 Continuous Deployment 和持续交付有什么区别?

在本文中,我们将回答这些问题,并了解所有这些实践以及它们可能对您的项目起作用或可能不起作用的所有信息。

介绍

CI代表持续集成,专注于简化应用程序的构建和测试过程。

CD代表持续部署或持续交付,具体取决于流程的定义方式。这两种做法有很多相似之处,也有非常显着的区别。

现在让我们详细了解这些实践。

什么是持续集成 (CI)?

简单来说,CI 是将所有开发人员代码更改尽可能频繁地合并到单个共享主分支的过程。

开发人员每天多次将他们的代码更改合并到远程 Git 存储库的主分支。然后通过使用自动化创建构建并在创建的构建上运行测试来验证和验证这些代码更改。

对于那些遵循瀑布方法的人来说,这种做法可能听起来既忙碌又复杂。相反,在任何给定时间,被推送的代码更改都较小。因此,如果出现任何问题,更容易调试和解决。

因此,正在推送的新代码更改会在几分钟内构建、集成和测试,从而向开发人员提供有关代码状态和​​任何问题的即时反馈。

持续集成可确保当所有开发人员的新提交被集成到存储库的发布分支时,应用程序不会被破坏,因为它们都已提前进行了很好的测试。

什么是持续交付Continuous Delivery(CD)?

持续交付是在更短的周期内频繁、快速、可靠地向客户发布代码更改的实践。

继续 CI 中的自动化测试,应用程序发布过程是完全自动化的,因此只需单击一个按钮(手动触发器)即可在任何时间点增量部署代码更改。

通常,建议使用较短的发布周期。根据项目的大小和业务需求,您可以配置每日、每周、每两周发布计划。

发布周期越短,在部署到生产环境后出现任何问题时就越容易进行故障排除。

什么是持续部署Continuous Deployment(CD)?

没有手动触发的持续交付是持续部署。

在持续部署中,如果成功通过 CI/CD 管道的所有阶段,每个代码更改都会直接发布给客户,无需任何人工干预。

因此,如果任何管道测试都没有失败,那么客户可以立即使用每个代码更改。没有更多的发布日!

改善与客户的反馈循环非常有用。开发人员可以在几分钟内看到他们的更改上线,让他们有更多时间专注于构建更高质量的应用程序。

这种级别的自动化是通过组合几种不同的工具和流程来实现的,这些工具和流程协同工作以验证代码更改并将其推送到生产环境中。

一旦开发人员推送新的代码更改,它就会自动构建、集成、测试并直接部署到生产环境中。

持续交付和持续部署有什么区别?

持续交付涉及手动触发和人工决策,围绕什么和何时发布给客户。这构成了持续交付和持续部署之间差异的基础。

在持续部署中,每个代码更改都经过自动化测试和验证,如果一切顺利,应用程序的工作版本会自动推送到生产环境。

自然,很大程度上取决于测试套件和 CI/CD 管道的质量和效率。通过持续部署,团队可以在任何一天部署多个应用程序。

此外,持续交付通常涉及类似于生产的暂存环境,在最终发布之前具有强制性的时间延迟。此时间用于在将代码更改发布到生产之前手动查看和接受代码更改。

相比之下,持续部署通常没有任何用于手动审查或接受代码更改的暂存环境。这主要是因为所有代码更改都已经在开发早期得到验证,并通过了管道的所有阶段。

CI 和 CD 总结

如何从持续集成走向持续部署?

如果您正在开始一个只有几个贡献者的新项目,那么将每个代码更改直接部署到生产环境(即持续部署)可能很容易。您可以开始自动化部署过程,并直接将 Alpha 和 Beta 版本的代码更改发布到生产环境。

稍后,在您开始添加用户/客户之前,开始将测试作业添加到 CI/CD 管道,确保代码覆盖率足够,因为您构建应用程序。当您获得更多用户时,您将拥有一个高效且稳定的 CI/CD 管道,其中所有新代码更改在自动发布到生产环境之前都经过了很好的测试。

如果您已经有一个现有的应用程序有用户,您应该慢慢开始采用这些做法。您可以从持续集成和持续交付开始。定期审查您的流程,并根据客户反馈和业务需求迭代 CI/CD 管道。

然后,慢慢开始包括自动执行的基本单元测试,复杂的端到端功能测试不需要在早期阶段成为优先事项。相反,请专注于尽可能地自动化您的部署,并进入自动完成应用程序部署到您的暂存或预生产环境的阶段。

您需要更多地关注自动化部署的原因是,在大多数情况下,需要花费大量时间和精力将代码更改实际部署到目标环境。一旦实现了部署自动化,您就可以逐渐将注意力再次转移到改进自动化测试上。

但是,请确保组织的其他成员(如文档、销售、支持和营销团队)已准备好处理频繁部署的版本。这些团队将需要改进和适应新的自动化流程,而不会对客户造成任何明显影响。

结论

无论您的组织是否遵循这些实践中的一种或完全遵循其他方法,提高产品质量和交付效率的关键要求是在交付管道中尽可能地实现自动化。这将确保向您的客户提供可持续和可靠的产品。

目标是在应用程序交付中开发高水平的自动化,同时不放弃对整个过程的可见性和控制。

发表评论