详解CI、CD相关概念

CI:持续集成(CONTINUOUS INTEGRATION)
基本概念
CI的全称是Continuous Integration,表示持续集成。服务器

在CI环境中,开发人员将会频繁地向主干提交代码。这些新提交的代码在最终合并到主干前,须要通过编译和自动化测试流进行验证。测试

持续集成过程当中很重视自动化测试验证结果,以保障全部的提交在合并主线以后的质量问题,对可能出现的一些问题进行预警。开发

须要具有的条件
团队须要为每一个新功能、代码改进、或者问题修复建立自动化测试用例。
你须要一个持续集成服务器,它能够监控代码提交状况,对每一个新的提交进行自动化测试。
研发团队须要尽量快的提交代码,至少天天一次提交。
带来的效益
经过自动化测试能够提前拿到回归测试的结果,避免将一些问题提交到交付生产中。
发布编译将会更加容易,由于合并之初已经将全部问题都规避了。
减小工做问题切换,研发能够很快得到构建失败的消息,在开始下一个任务以前就能够很快解决。
测试成本大幅下降,你的CI服务器能够在几秒钟以内运行上百条测试。
你的QA团队花费在测试上面的时间会大幅缩短,将会更加侧重于质量文化的提高上面。
CD:持续部署(CONTINUOUS DEPLOYMENT)
基本概念
CD的全称是Continuous Deployment,表示持续部署。文档

在CD环境中,经过自动化的构建、测试和部署循环来快速交付高质量的产品。某种程度上表明了一个开发团队工程化的程度,任何修改经过了全部已有的工做流就会直接和客户见面,只有当一个修改在工做流中构建失败才能阻止它部署到产品线。部署

持续部署是一个很优秀的方式,能够加速与客户的反馈循环,可是会给团队带来压力,由于再也不有“发布日”了。开发人员能够专一于构建软件,他们看到他们的修改在他们完成工做后几分钟就上线了。工作流

基本上,当开发人员在主分支中合并一个提交时,这个分支将被构建、测试,若是一切顺利,则部署到生产环境中。产品

须要具有的条件
研发团队测试理念比较完善。测试单元的健壮性直接决定你的交付质量。
你的文档和部署频率要保持一致。
特征标志成为发布重大变化过程的固有部分,以确保您能够与其余部门(支持,市场营销,公关…)协调。
带来的效益
发布频率更快,由于你不须要停下来等待发布。每一处提交都会自动触发发布流。
在小批量发布的时候,风险下降了,发现问题也能够很轻松的修复。
客户天天均可以看到咱们的持续改进和提高,而不是每月或者每季度,或者每一年。
CD:持续交付(CONTINUOUS DELIVERY)
基本概念
持续交付的英文全称是:Continuous delivery,缩写也是CD,它是一种软件工程手法。自动化

它可让软件产品的产出过程在一个短周期内完成,以保证软件能够稳定、持续的保持在随时能够释出的情况。它的目标在于让软件的建置、测试与释出变得更快以及更频繁。这种方式能够减小软件开发的成本与时间,减小风险。io

有时候,持续交付也与持续部署混淆。持续部署意味着全部的变动都会被自动部署到生产环境中。持续交付意味着全部的变动均可以被部署到生产环境中,可是出于业务考虑,能够选择不部署。若是要实施持续部署,必须先实施持续交付。编译

须要具有的条件你须要有强大的持续集成组件和足够多的测试项能够知足你代码的需求。部署须要自动化。触发是手动的,可是部署一旦开始,就不能人为干预。你的团队可能须要接受特性开关,没有完成的功能模块不会影响到线上产品。带来的效益繁琐的部署工做没有了。你的团队不在须要花费几天的时间去准备一个发布。你能够更快的进行交付,这样就加快了与客户之间的反馈环。轻松应对小变动,加速迭代。

相关文章
相关标签/搜索