当前位置: 首页 > 科技观察

说说持续集成、持续交付、持续部署的区别

时间:2023-03-19 00:13:03 科技观察

经常听到持续集成、持续交付、持续部署,这三者是什么,有什么联系和区别?如果将开发工作流程分为以下几个阶段:Code->Build->Integration->Test->Delivery->Deployment如上图所示,“持续集成”、“持续交付”和“持续”“部署”有不同的软件自动化交付周期。持续集成持续集成是指将个人开发的软件的一部分交付给软件的整体部分,为了更快地发现错误而频繁集成。“持续集成”起源来自极限编程(XP),XP最初的12个实践之一。CI需要有这些:自动化测试工具;灵活的基础架构。容器和虚拟机的存在使开发人员和QA人员免于经历大量的麻烦;版本控制工具。如Git、CVS、SVN等;用于自动化构建和软件发布流程的工具,例如Jenkins、flow.ci;反馈机制。如构建/测试失败,可快速反馈给相关负责人,以尽快解决,达到更稳定的版本。持续集成的优势“failfast”,对产品无风险测试,快速响应;最大限度地降低风险并降低修复错误代码的成本;将重复的手动流程自动化,让工程师更专注于代码;维护频繁的部署并快速生成可部署的软件;提高项目的可见性,使团队成员更容易了解项目的进度和成熟度;增强开发人员对软件产品的信心,帮助建立更好的工程师文化。持续集成,从哪里开始最重要的部分是选择合适的持续集成系统。是构建私有部署还是选择托管式持续集成系统,取决于团队运营的基础设施以及团队在持续集成系统上的资源投入。比较私有部署和托管的持续集成系统可能会帮助您做出更好的选择。SelfHostedCI是指在公司机房或内网部署软件。它需要提供多台服务器来完成CI系统的运行,同时需要配置不同机器之间的环境。比如Maven或者Gradle或者Jenkins,它们的特点是免费开源,文档支持丰富。优点是您可以完全控制构建环境,实现完全自定义。但需要搭建环境和配置,维护成本高。需要购买专机,耗费大量人力物力,更新迁移风险大。机器、软件安装、环境搭建等费用。常见的有CircleCI、Codeship和TravisCI等,还有国内最好的持续集成服务——flow.ci。SaaS型CI的特点是不需要额外的机器,几分钟就可以使用。资源可以根据您的需要进行动态调度。省时、省心、省力。总体而言,Jenkins过去一直是大多数公司的选择,但这种现象正在改变。随着公有云服务、Docker、SaaS的普及,越来越多的企业开始选择HostedCI,即托管持续CI。综合系统。此外,在选择合适的持续集成服务时,还需要考虑系统适应公司不同阶段开发测试需求的灵活性。选择持续集成系统只是持续集成应用的第一步。还需要建立合适的持续集成文化,例如代码质量控制和测试文化。做好持续集成,可以为持续交付和持续部署打下坚实的基础。持续交付持续交付基于持续集成,将集成后的代码部署到更接近真实运行环境的“类生产环境”。持续交付在整个产品生命周期中优先考虑软件部署,建立在高水平的自动化持续集成之上。试想一下,如果说等到一切都完成了再交付到下一个环节,那么所有的问题都只能在重装之后才能破解,解决成本巨大甚至无法解决。例如,我们在完成单元测试后,可以将代码部署到连接数据库的Staging环境中,进行更自动化的测试。如果代码没有问题,可以继续手动部署到生产环境。当然,持续交付并不意味着对软件的每一次更改都必须尽快部署到生产环境中。这意味着可以随时部署任何代码修改。持续交付的好处持续交付和持续集成的好处非常相似:快速发布。能够响应业务需求并更快地实现软件价值。编码->测试->直播->交付的频繁迭代周期缩短,同时获得快速反馈;高质量的软件发布标准。整个交付过程标准化、可重复、可靠,整个交付过程的进度可视化,便于团队成员了解项目的成熟度;更先进的团队协作方式。从需求分析、产品用户体验到交互设计、开发、测试、运维等角色,相比传统的瀑布式软件团队,浪费更少。持续部署持续部署是指交付的代码通过review后自动部署到生产环境。持续部署是持续交付的第一阶段。这意味着所有通过一系列自动化测试的更改都会自动部署到生产环境中。它也可以称为“持续发布”。为什么持续部署是一个理想的工作流程?》开发人员提交代码,持续集成服务器获取代码,执行单元测试,根据测试结果决定是否部署到暂存环境,如果成功部署到暂存环境,进行整体验收测试。如果测试通过自动部署到产品环境,整个过程是自动化和高效的。”事实上,产品从需求到部署的过程中,会经历几个不同的环境,比如QA环境、各种自动化测试运行环境、生产环境等。这些环境的搭建、配置、管理,以及产品在不同环境具体部署,非常复杂,从头到尾的持续部署完全自动化确实很难,那么如果能实现持续交付,保证代码在模拟环境下没问题,或许团队成员真正意识到了持续部署的优势持续部署的主要优势是可以相对独立地部署新功能,可以快速收集真实用户的反馈。“你构建它,你运行它”,这就是核心秘籍亚马逊一年可以完成5000万次部署,每个工程师平均每天部署50次以上***“持续集成”、“持续交付”和“持续部署”为整个团队提供了一个既有好处又有挑战的优秀DevOps环境。无论如何,频繁部署、快速交付、开发和测试过程的自动化都将成为未来软件工程的重要组成部分。欢迎分享你的看法。