您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

持续集成与持续部署的区别 | CI&CD

时间:2019-08-26 15:51:39  来源:  作者:

背景

持续集成持续部署这两个术语倾向于组合成首字母缩略词CI / CD,通常两者之间没有任何区别。由此可以很容易地假设持续部署是持续集成的扩展,并且两个过程的执行都是单个工具的责任。

假设CI / CD 只是具有部署步骤的CI,则忽略了两个进程之间的一些基本差异。在文中,我们将看看:

  • CI和CD是不同流程的原因。
  • 优秀的CD工具提供的功能。
  • 为什么您可以考虑为CI / CD工作流程使用单独的工具。

什么是持续集成?

持续集成与持续部署的区别 | CI&CD

 

在高层次上,CI就是将开发人员编写的代码编译打包,运行自动化测试并捕获日志文件,以便解决任何失败的构建或测试。CI服务器通过在每次提交时运行构建和测试来实现此过程。

CI过程可以描述为等式:

代码+依赖项+构建工具+执行环境=测试结果+日志+编译包

等式的左边是开发人员编写的代码,代码的任何依赖关系,构建工具以及执行构建和测试的环境。当这些输入可用时,CI服务器完成构建以生成等式右侧的元素。

正确配置CI服务器后,对存储库的每次提交都会导致构建正在运行,从而解决方程式而无需人工干预。

这意味着CI过程是机器驱动的,因此CI服务器通常具有只读用户界面,如Jenkins Blue Ocean UI。

CI方程的另一个重要方面是开发人员提供输入,并为开发人员或其他技术角色的人员创建输出。IT部门以外的员工很少与CI服务器交互。

什么是持续部署?

持续集成与持续部署的区别 | CI&CD

 

从字面上看,CD从CI服务器执行的成功构建中获取编译的包,并将它们部署到生产环境中。在这种情况下,CD完全正确地是CI的扩展,并且两者之间的区别变得简单。

这种提交到消费者的管道在简单的项目中很常见。只要已经建立了适当的测试和监控系统,更复杂的项目也可以拥有完全自动化的开发流程。

但是,虽然完全自动化部署具有许多优点,但部署涉及人为决策的情况并不少见。有许多正当理由不能自动将每个提交到主分支的部署到生产中,包括:

  • 从产品所有者处获得人工批准。
  • 可用性测试,不可能自动化。
  • 企业内部要求。
  • 遇到一些配置技术问题
  • 对测试没有100%的信心。

CI是机器驱动的,对于许多团队而言,CD是人为驱动的。执行部署的大部分工作仍然是自动化的,但是促进从发布到生产的决定是人为的。重要的是,技术人员可能不会做出决定,而是产品所有者,经理或熬夜到午夜点击部署按钮的人。

为什么要使用单独的CI和CD工具?

 

持续集成与持续部署的区别 | CI&CD

 

 

这是一个典型的例子,说明简单的项目如何将CI和CD合并到一个流程中,一旦编译完代码就开始生产部署。

这个过程没有任何问题,只要管道的每个部分都保持完全自动化,它就可以按预期工作。但是,如果人需要在应用程序发布之前测试并批准该应用程序,会发生什么?

要做出此决定,必须中断部署过程。例如,我们首先将应用程序部署到测试环境,允许相关方验证更改,并且当每个人都满意时,将版本提升为生产。

这个单一决策点意味着我们曾经的机器驱动方程式:

  • 需要提供操作界面,对测试环境进行的发布。
  • 需要提供操作界面显示审计和安全问题,以便我们可以限制并审查谁将哪些版本推广到哪些环境。
  • 需要提供操作界面,以允许将部署提升到下一个环境。
  • 需要提供操作界面和操作API和日志宝贝界面,可靠地保护和管理操作。

 

持续集成与持续部署的区别 | CI&CD

 

面板与手动部署按钮。

当CI / CD被呈现为仅在编译代码之后自动执行的部署步骤时,这种对人为干预的关注经常丢失。

例如:Jenkins文档建议将测试和生产环境建模为CI管道中的阶段。

乍一看,这个例子似乎为人工审核部署提供了一个过程,但是从未考虑将其推向生产的构建会发生什么?在应用程序向客户公开之前,此类构建将被取消,从而导致构建失败。这些失败的构建很难与未能编译或未通过测试的构建区分开来,即使在此实例中未提升到生产是CD过程的预期行为。

简而言之,一个好的CD工具可以提高人工决策过程,这种过程对于部署来说是如此常见(如果不是必不可少的话),或者至少是环境之间部署的当前状态,并使部署自动化。

认识到机器驱动的CI流程和人工驱动的CD流程之间的不同要求,对于以快速,可靠和可重复的方式向客户交付功能至关重要,这就是为什么使用专用工具进行持续集成和持续部署,提高效率。

快乐的部署!



Tags:持续集成   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
在当今互联网行业乃至一些大厂,大部分公司都采用敏捷项目管理模式来管理项目,在敏捷十二条宣言中有一条是这样说:“我们的最高目标是,通过尽早和持续地交付有价值的软件来满足...【详细内容】
2021-04-30  Tags: 持续集成  点击:(167)  评论:(0)  加入收藏
在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作。借助Jenkins,我们可以结合 Git/SVN 自动拉取代码,通...【详细内容】
2021-02-19  Tags: 持续集成  点击:(230)  评论:(0)  加入收藏
pytest介绍pytest是一款强大的python测试工具,可以胜任各种级别的软件测试工作,可以自动查找测试用并执行,并且有丰富的基础库,可以大幅度提高用户编写测试用例的效率,具备可扩...【详细内容】
2020-03-16  Tags: 持续集成  点击:(59)  评论:(0)  加入收藏
Masters -- LinuxJDKjdk-8u221-linux-x64.tar.gz1. 上传源码包到/usr/local/java/ -- 解压 -- /usr/local/java/jdk1.8.0_2211. 配置环境变量 vim /etc/profile export JAV...【详细内容】
2020-02-16  Tags: 持续集成  点击:(67)  评论:(0)  加入收藏
背景持续集成和持续部署这两个术语倾向于组合成首字母缩略词CI / CD,通常两者之间没有任何区别。由此可以很容易地假设持续部署是持续集成的扩展,并且两个过程的执行都是单个...【详细内容】
2019-08-26  Tags: 持续集成  点击:(321)  评论:(0)  加入收藏
▌简易百科推荐
本文分为三个等级自顶向下地分析了glibc中内存分配与回收的过程。本文不过度关注细节,因此只是分别从arena层次、bin层次、chunk层次进行图解,而不涉及有关指针的具体操作。前...【详细内容】
2021-12-28  linux技术栈    Tags:glibc   点击:(3)  评论:(0)  加入收藏
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(2)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(10)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(20)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(25)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(25)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条