查看原文
其他

CI/CD 管道:揭开复杂性的神秘面纱

泽阳 DevOps时代 2024-03-22

业界领导者认为CI / CD是应用程序开发周期的重要组成部分,因为企业渴望缩短产品上市时间。持续集成和持续交付有助于改善和提高产品质量,同时降低项目成本。该博客将帮助您了解CI / CD管道的功能,其挑战和好处。在开始详细讨论之前,让我们看一下基本术语。

持续集成

持续集成(CI)是一种软件开发实践,开发人员经常在其中进行代码更改并将其添加到中央存储库中,然后再运行自动化测试。CI是软件发布过程的集成阶段,它取决于自动化和持续集成。主要目标是发现错误并迅速解决问题,以提高软件质量并缩短产品上市时间。


持续集成中,开发人员一天要专注于较小的提交。开发人员将代码从存储库中拉出,然后再将其推送到构建服务器,构建服务器将在其中运行各种测试以验证代码提交。

持续交付

持续交付是一种软件开发实践,可确保更快,更稳定地发布代码更改。这样,更改将自动生成,测试并为生产发布做好准备。构建阶段完成后,将代码更改部署到测试环境或生产环境。当实现连续交付时,开发人员始终具有已通过标准测试过程的可部署的构建工件。在连续开发中,代码会自动对生产环境进行修订,从而可以在开发周期的早期提供连续的反馈循环。

持续部署

连续部署有点类似于连续交付,但又朝着过程自动化迈进了一步。贯穿所有生产阶段的变更将直接发布给客户,而无需任何人工干预。持续部署会加速反馈循环,因为只有失败的测试才能阻止更改部署到生产中。


连续测试

在整个软件开发生命周期中执行自动化测试的做法。CT代替了在软件开发周期结束时进行测试的旧测试方法,而是在多个阶段进行CT,包括开发,集成,预发布和生产。这样做可以确保在开发过程的早期阶段捕获并修复错误,从而节省大量时间和金钱。

在构建将要部署在实时服务器上的应用程序时,将有一组开发人员负责编写代码。开发人员将代码提交到版本控制系统(如Git)中,从那里进入构建阶段。然后使用适当的版本标签将构建的文件发送到下一阶段。

例如,您有一个需要在执行之前进行编译的代码。当代码进入构建阶段时,代码的所有功能将从各种存储库合并并使用编译器进行编译。

下一个阶段是测试阶段,其中执行各种类型的测试。健全性测试和单元测试是该过程中最关键的部分,因为已测试建筑物的各个单元以检查它们是否满足要求。

通过测试后,构建将移至部署阶段,然后将其推送到测试服务器中。在这里,开发人员在类似于生产的环境中对产品进行仿真以检查功能。

在将构建功能部件部署到生产中之前,自动化测试阶段将执行最终测试以使功能部件合格。在此阶段实施了连续测试,以确保没有剩余的错误。

如果CI / CD流程的任何阶段出现错误,则会将反馈发送给开发团队,以便立即解决问题。此后,代码更改将再次通过生产管道。

在最后阶段,代码在通过所有测试后被移至生产服务器。恒定的反馈循环有助于使CI / CD管道成为一个封闭的过程,在此过程中,构建将被连续提交,测试并部署到生产中。

CI/CD管道中的挑战

有限的环境

在CI / CD管道实施期间,有限数量的共享测试环境会增加出现瓶颈的风险。您将需要保留一个环境,以避免并排运行的多个CI / CD管道尝试在同一环境中进行部署和测试。部署失败的主要原因之一是先前团队或测试运行所修改的配置错误的环境。

安全性和所有权

有时,当交付管道跨越组织中的多个团队时,当阶段失败时,很难知道谁需要修复管道。在CI / CD管道的每个阶段都必须指派一位所有者,负责解决问题并确保交付顺利进行。所有者还将为反馈驱动的管道改进做出贡献。 

团队使用的编排工具应具有有效的安全模型,以更好地了解整个CI / CD管道的状态。例如,要确定测试失败的原因,团队将必须检查测试阶段的结果。但是,不应授予他们修改或禁用该测试步骤的配置的权限。管理多个自定义CI / CD管道

具有多个需要编译,测试和部署的组件的大型应用程序很难进行增量更新,从而导致较长的测试和部署周期。由于多个团队同时进行多项更改,因此执行质量控制和根本原因分析变得更加困难。

由于发布过程需要稍有不同,因此很难创建标准化的交付管道。团队通常会启动工作流,以逐步将应用程序的组件分解为不同的模块,以便可以分别构建和部署它们,从而以较少的代码更改集实现更快的反馈周期。

为什么CI/CD如此重要?

CI / CD为您的软件开发团队提供了许多好处,包括提高开发人员的生产率,自动化过程,提高代码质量以及更快地向客户提供更新。让我们看一下实现CI / CD管道的更多好处。

提高开发人员生产力

CI / CD实践使开发人员从手动任务中解脱出来,处理复杂的依赖项,并将精力集中在提供新功能上,从而提高了团队的生产力。开发人员可以将精力集中在提供所需功能的编码逻辑上,而不必将其代码与业务的其他部分集成并花费时间在如何将此代码部署到平台上。

自动化软件发布流程

连续交付为您的团队提供了一种方法,用于检入已自动构建,测试并为发布到生产环境而准备的代码,从而使软件交付高效,有弹性,快速且安全。

提高代码质量

CD可以帮助您在交付过程中尽早发现并解决错误,然后再将它们变成更大的问题。您的团队可以轻松执行其他类型的代码测试,因为整个过程已经自动化。通过更频繁地进行更多测试的原则,团队可以更快地迭代,并立即获得有关变更影响的反馈。

这使团队能够以高度的稳定性和安全性来驱动质量代码。开发人员将通过即时反馈了解新代码是否有效以及是否引入了任何重大更改或错误。在开发过程中尽早发现的错误最容易解决。

更快地提供更新

CD可帮助您的团队快速,频繁地向客户提供更新。当实施CI / CD时,整个团队的速度,包括发布功能和错误修复的速度都会提高。企业可以更快地响应市场变化,安全挑战,客户需求和成本压力。

例如,如果需要新的安全功能,您的团队可以实施CI / CD并进行自动测试,以高度自信地将修复程序快速可靠地引入生产系统。过去需要花费数周甚至数月的时间,现在可以在几天甚至几小时内完成。

总结

持续集成和持续交付是组织的应用程序开发团队的理想解决方案。开发人员只需要将代码推送到存储库即可。该代码将被集成,测试,部署,再次测试,与基础架构合并,经过安全和质量审查,并准备以极高的信心进行部署。一个CI / CD管道有助于提高代码质量和软件更新快速传递。

来源:本文转自公众号 DevOps 持续集成,点击查看原文

互联网、金融、通信 DevOps 转型落地经验,就在 GOPS 2020 · 深圳站

近期好文推荐:

重磅!2020 年 DevOps 持续交付标准和技术运营标准评估报名正式启动!

远程办公条件下,DevOps 如何加快研发交付

持续交付体系在高德的实践历程

有了自动化就是 DevOps?浅谈 DevOps 的反模式

交付全链路数据,苏宁消费金融在 DevOps 度量设计的思考

流程可视化的利器:Jenkins BlueOcean

我只是下了个订单,鬼知道我在微服务里经历了什么…

DevOps 时代的软件过程改进探讨

震惊!DevOps CI/CD 竟然对抗击新冠期间的工作开展有这么大的作用?

“DevOps时代”公众号诚邀广大技术人员投稿。

投稿邮箱:jiachen@greatops.net 或 添加联系人微信:135 2116 9787(同微信)。

点击阅读原文,立即报名 GOPS 2020 · 深圳站

你点的每个赞,我都认真当成了喜欢
继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存