📜  什么是 CI/CD?

📅  最后修改于: 2022-05-13 01:58:43.803000             🧑  作者: Mango

什么是 CI/CD?

CI持续集成是将来自多个开发人员的代码更改自动集成到单个代码库中的实践。这是一种软件开发实践,开发人员经常将他们的工作提交到中央代码存储库(Github 或 Stash)中。然后有一些自动化工具可以在集成时根据需要构建新提交的代码并进行代码审查等。

持续集成的主要目标是更快地发现和解决错误,简化跨开发团队的代码集成过程,提高软件质量并减少发布新功能更新所需的时间。一些流行的 CI 工具是Jenkins、TeamCity 和 Bamboo。

为什么选择 CI?

可能会有这样的场景:团队中的开发人员长时间孤立地工作,并且只有在他们的工作完成后才将他们的更改合并到主分支。这不仅使代码的合并变得非常困难,容易发生冲突,而且耗时长,而且导致 bug 积累了很长时间,只有在开发的后期才能发现。这些因素使得快速向客户提供更新变得更加困难。

通过持续集成,开发人员经常使用 Git 等版本控制系统提交到共享的公共存储库。持续集成管道可以自动运行构建、存储工件、运行单元测试,甚至使用 Sonar 等工具进行代码审查。我们可以将 CI 管道配置为每次在代码库中有提交/合并时触发。

CI是如何工作的?

下面是 CI 管道的图形表示 - 从开发人员检查其代码到其自动构建、测试和构建状态的最终通知的工作流程。

一旦开发人员将他们的代码提交到 Git 等版本控制系统,它就会触发 CI 管道,该管道获取更改并运行自动构建和单元测试。根据该步骤的状态,服务器然后通知相关开发人员将新代码集成到现有代码库是成功还是失败。

这有助于更快地发现和解决错误,通过将开发人员从手动任务中解放出来提高团队的生产力,并帮助团队更频繁地向客户提供更新。已经发现,集成整个开发周期可以将开发人员的时间减少约 25 – 30%。

CD 或持续交付

CD持续交付是在持续集成之后进行的,以确保我们能够以无错误的方式快速向客户发布新的更改。这包括在暂存区域(类似于生产环境)运行集成和回归测试,以便最终版本在生产中不会被破坏。它确保自动化发布过程,以便我们始终拥有可发布的产品,并且我们可以在任何时间点部署我们的应用程序。

持续交付使整个软件发布过程自动化。开发人员/项目负责人可以根据需要触发部署到实时生产环境的最终决定。一些流行的 CD 工具是 AWS CodeDeploy、 Jenkins和 GitLab。

为什么是光盘?

持续交付帮助开发人员在与生产类似的环境中测试他们的代码,从而防止任何最后一刻或后期生产意外。这些测试可能包括 UI 测试、负载测试、集成测试等。它可以帮助开发人员抢先发现和解决错误。

通过自动化软件发布过程,CD 有助于低风险发布、降低成本、提高软件质量、提高生产力水平,最重要的是,它帮助我们更快、更频繁地向客户提供更新。如果正确实施持续交付,我们将始终拥有通过标准化测试过程的可部署代码。

CI 和 CD 如何协同工作?

下图描述了持续集成与持续交付相结合如何帮助加快软件交付过程,降低风险并提高质量。

CI/CD 工作流程

我们已经看到,一旦开发人员将源代码提交到代码存储库,持续集成如何自动执行构建、测试和打包源代码的过程。完成 CI 步骤后,代码将部署到暂存环境中,并在其中进行进一步的自动化测试(如验收测试、回归测试等)。最后,将其部署到生产环境中,用于产品的最终发布。

如果部署到生产是手动步骤,则该过程称为持续交付,而如果部署到生产环境的过程是自动化的,则称为持续部署。