作者 | Rebecca Pruess

编译 | 毛智伟

随着DevOps理念的普及与扩散,大家经常会看到持续集成(Continuous Integration)与持续交付(Continuous Delivery)这样的字眼,而怎样使用与选择这些方法成了大多数IT团队必须面对的问题。在讨论更加深入地讨论问题之前,首先需要清楚这两者之间的主要区别是什么,以及用什么方法可以更好改善工作流程,从而在更短的时间内为目标用户提供更高质量的软件。

持续集成(CI)和持续交付(CD)都体现了如今快节奏市场中的文化和发展原则,旨在缩短开发周期、提高软件交付效率以及实现全流程的自动化。同时,两者都有着共同的目标:让软件开发更少地依赖于手动执行的任务,在此基础上使得软件的发布更加频繁、更加安全可靠。由于有着相同的目标,因此持续集成和持续交付并非相互排斥的。只是它们的应用范围有所不同。

那下面就来看下CI与CD之间的联系与区别。

什么是持续集成

如上所述,CI和CD是相互关联的。持续集成是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。由此可见,CI专注于定期地让开发人员构建小批量的代码。而对于更新或新增的代码,它们会被上传至统一的代码库,执行自动构建与自动化测试的步骤。 频繁地向主干提交代码,意味着可以针对整个软件执行所有的自动化测试,并且在应用或接口的某个部分出现问题时,及时收到告警信息。

由于合并问题能被及时发现,因此也能被及时解决。此外,由于测试过程采用的是自动化测试,因此最终的主干分支一直处于可发布的状态。而这对传统的瀑布式的开发流程来说就很棘手。遵循CI中定义的原则,有助于进一步提高代码的可测试性和可部署性。通过将代码保持在可部署状态,就能避免在项目后期才进行单独的测试和Bug的修复,由此使得开发人员避开了“集成地狱”。而这也是Choerodon猪齿鱼开发流水线模块的主要目的。

什么是持续交付

持续集成包含了构建与自动化测试的阶段,而持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的“类生产环境”之中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。此外,持续交付同样遵循一个小型的构建周期,可以将一小批代码推送到多个环境:开发,测试或生产。

在此过程中,它结合了持续集成和持续部署的实践(即:让主干始终处于可部署状态)。而在Choerodon猪齿鱼平台中,当提交的代码完成以上步骤后,可以在“部署流水线-流水线管理”中创建对应的CD流水线将持续集成后产生的应用版本自动部署到对应的环境中去。此外,对于部署到正式环境的代码,可以在流水线中间添加一个人工卡点任务,只有通过人工审核后,才能执行后续的自动部署任务。

理论上来说,CD使得IT团队可以每天发布与更新应用程序,但大多数IT团队选择每月或每两个月发布更完整的更新。

持续集成与持续交付的区别

CI和CD之间的区别在于使用的范围和主要的受益者。

(1)持续集成

持续集成对于加快编码和构建阶段的软件交付过程至关重要。因此,它的目标对象主要是开发人员,特别是那些处在复杂组织架构中的开发人员。通过自动构建和测试的流程,将对软件做的所有更改都集成到统一的代码库中,而无需进行手动任务。此外,由于CI是一个持续的过程,因此开发人员可以即时得到问题的反馈。他们可以实时获取到相关错误的信息,以便快速地定位与解决问题。显然这个过程可以大大地提高开发人员以及整个IT团队的工作效率。

(2)持续交付

持续交付涵盖了软件交付生命周期的绝大部分,能为目标用户和客户带来重大利益。CD中包含了自动构建,打包,部署与测试的流程,以此来减少手动任务并加快软件交付速度。小批量的代码成功完成整个流程的每个阶段后,目标用户或客户便能在类生产环境中进行验收。因此目标用户可以在几天或几周内就收到修复后的功能与新增的功能,而无需等待数月后才更新。

CD的部署频率也加快了整个流程中的反馈循环。最新版本真的解决了预期的问题吗?是否满足了用户的需求?在此用户就可以快速地验收并作出判断,而IT团队也可以在问题影响到开发周期之前就解决反馈的问题。持续的反馈循环使得用户与IT团队更紧密地合作,以确保能准确的理解与满足他们的需求。整个交付过程进度可视化,方便团队人员与客户了解项目的进度。

在当前快节奏的市场中,这无疑是一个重大的优势。当您将软件更快地推向市场时,您将获得更大的竞争优势。

CI或CD适合您的业务场景吗

持续集成可确保代码库中始终保持最新的代码,同时可以快速集成来自多个开发人员的代码,并确保这些代码可在多个环境中协同工作。它通常有助于减少错误并通过自动化流程来减少手动任务。CI可以实现代码的自动构建与测试,减少开发中的Bug。因此,CI适用于那些过度依赖手动任务和复杂构建过程的企业。

持续交付适用于需要缩短开发周期,更快地为目标用户提供软件的企业。CD降低了部署新软件或升级已有软件的难度,且实现了全流程的自动化,因此您的团队无需手动执行复杂繁琐的任务,从而加快反馈速度,来确保您增加的功能真正地满足用户的需求。

总而言之,CI和CD是相互补充的。CI的统一代码库和自动化测试的方法可用于支持CD中更大规模的自动化和更频繁的部署。因此将CI和CD结合到您开发与交付的流程中,会使您的IT团队更加敏捷,更加快速地开发。

目前,大多数CI / CD的工具采用的方法都大同小异。 而一般的DevOps工具通常都会支持CI和CD方法,相应地还会提供相关的自动化测试框架。Choerodon猪齿鱼平台中的DevOps模块便是结合了CI与CD的方法,并在此基础上实现了测试与部署的自动化。用户需要根据自己的实质需求来创建CD流水线,以此来实现不同环境不同版本类型的自动化部署;当然,您还可以在其中设置人工卡点任务,使得CD流水线随时处于人工的监控之下。

此外,也有不少人认为CI是CD的前提与基础,没有CI就不能实现CD。这种说法也是比较流行的,其思路如下图。因此,不管是哪种说法,CI与CD都是DevOps工具中不可或缺的理念与方法。

原文地址:
https://dzone.com/articles/continuous-integration-vs-continuous-delivery

更多Choerodon猪齿鱼持续交付相关文章▼

  • Choerodon猪齿鱼实践之持续交付中的分支管理与版本控制

  • GitOps | 一种云原生的持续交付模型

  • Choerodon猪齿鱼 Agent——基于GitOps的云原生持续交付模型

关于Choerodon猪齿鱼

Choerodon猪齿鱼开源多云技术平台,是基于开源技术Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台通过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。

大家也可以通过以下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献:

  • 官网:http://choerodon.io
  • 论坛:http://forum.choerodon.io
  • Github:https://github.com/choerodon
  • 微信公众号:Choerodon猪齿鱼
  • 微博:Choerodon猪齿鱼

持续集成与持续交付之间的联系和区别相关推荐

  1. Jenkins学习总结(4)——持续集成,持续交付,持续部署之间的区别

    经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢?

  2. ci持续集成工程师前景_不要忽视持续集成(CI)/持续交付(CD)的13个优势

    原标题:不要忽视持续集成(CI)/持续交付(CD)的13个优势 持续集成(CI)/持续交付(CD)是现代软件开发周期的基础,人们需要了解持续集成(CI)/持续交付(CD)和其管道实施的所有好处. 在传 ...

  3. 【Jenkins】持续集成、持续交付与持续部署

    持续集成.持续交付与持续部署,都是软件开发过程中的很好的实践. 一.持续部署 装修厨房 全部装好之后发现灯不亮,电路有问题:冷热水装反了,管路有问题.这些问题要解决就必须把地砖.墙砖拆掉--一个环节有 ...

  4. CI/CD是什么?如何理解持续集成、持续交付和持续部署

    CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法.CI/CD 的核心概念是持续集成.持续交付和持续部署.作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时 ...

  5. 产品迭代发布如何更快速?阿里持续集成与持续交付实践之路全解析

    2017年5月9日,云效平台资深研发工程师向禹通过直播分享了<持续集成与持续交付实践之路>.他从云效背景.云效方案.云效价值三个方面进行了分享.他主要分享了持续集成持续交付的解决方案和案例 ...

  6. 一文教你分清持续集成,持续交付,持续部署!

    1.持续集成 首先是 WiKi 给出的定义: continuous integration (CI) is the practice of merging all developer working ...

  7. 持续集成、持续交付、持续部署

    持续集成.持续交付.持续部署 持续集成 持续集成的优势 持续交付 持续部署 DevOps 总结 参考资料 又到了例行的技术报告环节.想着在实验室里头絮絮叨叨的讲一些前端开发相关的内容,师兄师姐们不爱听 ...

  8. 一文教你分清持续集成,持续交付,持续部署

    1 持续集成 首先是 WiKi 给出的定义: continuous integration (CI) is the practice of merging all developer working ...

  9. 适用于Java开发人员的微服务:持续集成和持续交付

    1.简介 如果我们回顾与微服务体系结构相关的众多挑战,确保每个微服务都能够与每个对等方说正确的语言可能是最困难的挑战之一. 我们最近谈论了很多关于测试的话题,但是总是有机会让bug潜入.也许是合同的最 ...

最新文章

  1. 河科大c语言上机实验答案,2016年河南科技学院信息工程学院C语言上机编程考研复试题库...
  2. 你应该知道的高性能无锁队列Disruptor
  3. 23种设计模式C++源码与UML实现--访问者模式
  4. 关于jquery的ajax编码的另类解决方案,巨简便
  5. 微软 azure_在Microsoft Azure上运行Eclipse MicroProfile
  6. PHP将Excel另存为html页面
  7. (六)api网关服务 zuul-过滤器
  8. MySQL-5.6.x二进制版本安装记录
  9. visio阵列_用Visio2010制作最专业的技术流程图教程
  10. 跨站请求伪造(CSRF)攻击是什么?如何防御?
  11. 【论文笔记】ego_planner_swarm
  12. oa处理会签流程图_OA-审批流程管理模块
  13. 【EhCache: 一款Java的进程内缓存框架】EhCache 是什么、代码实战、版本3的改进
  14. 1-丁基-3-甲基咪唑六氟磷酸盐离子液体[BMIM]PF6修饰碳纳米管(CNTs/[BMIM]PF6)试剂
  15. 《银翼杀手》画面布局赏析
  16. 群晖的home和homes共享文件夹介绍
  17. 计蒜客 2020 蓝桥杯大学 A 组省赛模拟赛 (一)题目及解析
  18. H5 实现自定义video播放器,快来点我吧
  19. 深入理解JUC——AQS 及 ReentrantLock
  20. 植物大战僵尸1下载(附介绍)

热门文章

  1. c++strtol()
  2. html 购物车动画效果,Jquery商品飞入购物车动画效果实例展示
  3. 在公司里怎么修改共享账号的密码
  4. 我到底要选择一种什么样的生活方式,度过这一辈子呢:人生自由与职业发展方向(上)...
  5. 在线阅读!!机器学习数学精华:概率论与数理统计
  6. springboot项目jar包启动脚本
  7. libcad.so Crack,转换为多种文件格式
  8. EtherNet/IP协议开发1:从OpENer开始
  9. saiku的简单配置及使用
  10. php怎么和数据库建立连接数据库服务器端,PHP和 mysql 数据库服务器连接上,才能进一步操作数据库。...