做者 | Rebecca Pruessgit
编译 | 毛智伟github
随着DevOps理念的普及与扩散,你们常常会看到持续集成(Continuous Integration)与持续交付(Continuous Delivery)这样的字眼,而怎样使用与选择这些方法成了大多数IT团队必须面对的问题。在讨论更加深刻地讨论问题以前,首先须要清楚这二者之间的主要区别是什么,以及用什么方法能够更好改善工做流程,从而在更短的时间内为目标用户提供更高质量的软件。安全
持续集成(CI)和持续交付(CD)都体现了现在快节奏市场中的文化和发展原则,旨在缩短开发周期、提升软件交付效率以及实现全流程的自动化。同时,二者都有着共同的目标:让软件开发更少地依赖于手动执行的任务,在此基础上使得软件的发布更加频繁、更加安全可靠。因为有着相同的目标,所以持续集成和持续交付并不是相互排斥的。只是它们的应用范围有所不一样。微信
那下面就来看下CI与CD之间的联系与区别。架构
如上所述,CI和CD是相互关联的。持续集成是指软件我的研发的部分向软件总体部分交付,频繁进行集成以便更快地发现其中的错误。因而可知,CI专一于按期地让开发人员构建小批量的代码。而对于更新或新增的代码,它们会被上传至统一的代码库,执行自动构建与自动化测试的步骤。 频繁地向主干提交代码,意味着能够针对整个软件执行全部的自动化测试,而且在应用或接口的某个部分出现问题时,及时收到告警信息。框架
因为合并问题能被及时发现,所以也能被及时解决。此外,因为测试过程采用的是自动化测试,所以最终的主干分支一直处于可发布的状态。而这对传统的瀑布式的开发流程来讲就很棘手。遵循CI中定义的原则,有助于进一步提升代码的可测试性和可部署性。经过将代码保持在可部署状态,就能避免在项目后期才进行单独的测试和Bug的修复,由此使得开发人员避开了“集成地狱”。而这也是Choerodon猪齿鱼开发流水线模块的主要目的。微服务
持续集成包含了构建与自动化测试的阶段,而持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的“类生产环境”之中。持续交付优先于整个产品生命周期的软件部署,创建在高水平自动化持续集成之上。此外,持续交付一样遵循一个小型的构建周期,能够将一小批代码推送到多个环境:开发,测试或生产。工具
在此过程当中,它结合了持续集成和持续部署的实践(即:让主干始终处于可部署状态)。而在Choerodon猪齿鱼平台中,当提交的代码完成以上步骤后,能够在“部署流水线-流水线管理”中建立对应的CD流水线将持续集成后产生的应用版本自动部署到对应的环境中去。此外,对于部署到正式环境的代码,能够在流水线中间添加一我的工卡点任务,只有经过人工审核后,才能执行后续的自动部署任务。测试
理论上来讲,CD使得IT团队能够天天发布与更新应用程序,但大多数IT团队选择每个月或每两个月发布更完整的更新。编码
CI和CD之间的区别在于使用的范围和主要的受益者。
持续集成对于加快编码和构建阶段的软件交付过程相当重要。所以,它的目标对象主要是开发人员,特别是那些处在复杂组织架构中的开发人员。经过自动构建和测试的流程,将对软件作的全部更改都集成到统一的代码库中,而无需进行手动任务。此外,因为CI是一个持续的过程,所以开发人员能够即时获得问题的反馈。他们能够实时获取到相关错误的信息,以便快速地定位与解决问题。显然这个过程能够大大地提升开发人员以及整个IT团队的工做效率。
持续交付涵盖了软件交付生命周期的绝大部分,能为目标用户和客户带来重大利益。CD中包含了自动构建,打包,部署与测试的流程,以此来减小手动任务并加快软件交付速度。小批量的代码成功完成整个流程的每一个阶段后,目标用户或客户便能在类生产环境中进行验收。所以目标用户能够在几天或几周内就收到修复后的功能与新增的功能,而无需等待数月后才更新。
CD的部署频率也加快了整个流程中的反馈循环。最新版本真的解决了预期的问题吗?是否知足了用户的需求?在此用户就能够快速地验收并做出判断,而IT团队也能够在问题影响到开发周期以前就解决反馈的问题。持续的反馈循环使得用户与IT团队更紧密地合做,以确保能准确的理解与知足他们的需求。整个交付过程进度可视化,方便团队人员与客户了解项目的进度。
在当前快节奏的市场中,这无疑是一个重大的优点。当您将软件更快地推向市场时,您将得到更大的竞争优点。
持续集成可确保代码库中始终保持最新的代码,同时能够快速集成来自多个开发人员的代码,并确保这些代码可在多个环境中协同工做。它一般有助于减小错误并经过自动化流程来减小手动任务。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工具中不可或缺的理念与方法。
原文地址: dzone.com/articles/co…
更多Choerodon猪齿鱼持续交付相关文章▼
Choerodon猪齿鱼开源多云技术平台,是基于开源技术Kubernetes,Istio,knative,Gitlab,Spring Cloud来实现本地和云端环境的集成,实现企业多云/混合云应用环境的一致性。平台经过提供精益敏捷、持续交付、容器环境、微服务、DevOps等能力来帮助组织团队来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。
你们也能够经过如下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献: