当前位置:首页-文章-持续集成-正文

持续集成、持续交付、持续部署的关系和区别

1、概述

通常,一个软件的开发过程大概包括以下几个阶段:编码、构建、集成、测试、交付、部署。

如下图所示,持续集成(Continuous Integration)、持续交付(Continuous Delivery)和持续部署(Continuous Deployment)有着不同的软件自动化交付周期。

持续集成、持续交付、持续部署的关系和区别 - 第1张
图1 持续集成、持续交付、持续部署对应的软件开发周期

2、什么是持续集成?

持续集成(Continuous Integration)是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。

在一个项目中,任何人对代码库的任何改动,都会触发CI服务器自动对项目进行构建,自动运行测试,甚至自动部署到测试环境。这样做的好处就是,随时发现问题,随时修复。因为修复问题的成本随着时间的推移而增长,越早发现,修复成本越低。

持续集成、持续交付、持续部署的关系和区别 - 第2张
图2 持续集成

3、什么是持续交付?

持续交付(Continuous Delivery)在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。

如果说等到所有东西都完成了才向下个环节交付,导致所有的问题只能在最后才爆发出来,解决成本巨大甚至无法解决。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中进行更多的自动化测试。如果代码没有问题,可以继续手动部署到生产环境中。当然,持续交付并不是指软件每一个改动都要尽快部署到产品环境中,它指的是任何的代码修改都可以在任何时候实施部署。

持续集成、持续交付、持续部署的关系和区别 - 第3张
图3 持续交付

4、什么是持续部署?

持续部署(Continuous Deployment)是指当交付的代码通过评审之后,自动部署到生产环境中。持续部署是持续交付的最高阶段。这意味着,所有通过了一系列的自动化测试的改动都将自动部署到生产环境。

持续部署的工作过程如下:

开发人员提交代码,持续集成服务器获取代码,执行单元测试,根据测试结果决定是否部署到预演环境,如果成功部署到预演环境,进行整体验收测试,如果测试通过,自动部署到产品环境,全程自动化高效运转。

持续集成、持续交付、持续部署的关系和区别 - 第4张
图4 持续部署

5、总结

综上所示,从持续集成、持续交付到持续部署是一个不断递进的过程,软件开发自动化程度也随之不断提高,对于团队来说,需要选择合适的软件工具,并为团队协同开发搭建合理的工作流程。

本文原创,作者:Modeler。
如需转载,请注明出处:https://modelbaba.com/continuous-integration/290.html

相关文章

换一批