首页>>科技 >>内容

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

发布时间:2023-09-01 08:46:38编辑:温柔的背包来源:

很多朋友对持续集成 持续交付 持续部署,一文教你分清持续集成,持续交付,持续部署不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

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

摘要

持续集成(CI)是一种开发实践,开发人员经常(最好一天几次)将代码集成到一个共享的存储库中。每个集成都可以通过自动构建和自动测试来验证。尽管严格来说自动化测试不是CI的一部分,但它通常是隐含的。定期集成的主要好处之一是您可以快速检测错误并更容易地定位错误。因为每个引入的变更通常都很小,所以您可以快速识别出引入缺陷的特定变更。

近年来,CI已经成为软件开发的最佳实践,并遵循一系列关键原则。这些包括版本控制、构建自动化和自动化测试。此外,持续部署和持续交付已经成为最佳实践,允许您随时随地部署应用程序,甚至在每次引入新的更改时自动将主代码库推送到生产环境中。这允许您的团队快速行动,同时保持可以自动检查的高质量标准。

CI/CD应用场景:开发者上传本地代码到gitlab版本服务器jenkins通过webhook插件自动从gitlab服务器拉最新代码,通过docker-maven-plugin插件自动编译代码,上传自定义镜像到docker私有服务器k8s集群,自动拉最新版本镜像,自动部署整个项目。用户通过nginx负载平衡访问整个项目。什么是持续集成、持续交付和持续部署?持续集成

是一种开发实践,要求开发人员每天数次将代码集成到共享存储库(GitLab)中。

开发人员通常使用一个名为CI Server的工具进行构建和集成。CI需要自测代码。这是用于自测的代码,以确保它按预期工作。这些测试通常被称为单元测试。集成代码后,当所有的单元测试都通过时,你会得到一个最新的代码版本。这表明他们已经验证了他们的更改已经被成功地集成,并且代码如测试所预期的那样工作。从图例来看,持续整合的过程非常清晰:

开发者将代码提交到源码库,通过git hook触发CI服务器的相关功能。执行编译-测试-输出结果的过程,并将结果反馈给开发人员。可见,持续集成的核心是保证新添加的代码能够与原代码正确集成。与后面要介绍的持续交付和持续部署的主要区别在于它们的目标不同。连续交付(CD)

是一种软件工程方法,团队可以在短时间内将软件部署到生产环境中,并保证软件可以随时可靠发布,发布软件时可以手工完成。

持续交付意味着每次代码被更改、集成和构建时,他们也会在与生产非常相似的环境中自动测试代码。我们将这种在不同环境中部署和测试的过程称为部署管道。部署管道通常有开发环境、测试环境和产品化环境,但是这些阶段对于团队、产品和组织来说是不同的。

与持续集成相比,持续交付侧重于交付,其核心对象不是代码,而是可交付的产品。因为持续集成只是测试新旧代码的集成过程,所以在更改为持续交付之后,需要一些额外的过程。可以看出,与持续集成相比,持续交付增加了一个测试-试运行-生产的过程,为新添加的代码增加了一个保障:确保新添加的代码在生产环境中可用。

在这个增加的过程中,测试环节不仅包括基本的单元测试,还需要扩展到更复杂的功能测试和集成测试。这里的Staging是指准生产环境,尽可能模拟真实的网络拓扑、数据库数据、硬件设备等资源,为测试人员反馈代码在生产环境中可能的性能。过程中每个环节的实现结果都会反馈给开发者,每一个错误都会导致版本的回滚。

测试完成并确认后,将由相关人员手动部署到生产环境中。

连续部署连续部署意味着软件功能通过自动化部署的方式频繁交付。在本练习中,团队领导所做的每一项更改都通过了所有的测试阶段,并自动投入生产。要实现持续部署,团队领导首先需要持续交付。

可见,持续集成和持续交付的区别在于生产的自动化。从开发者提交代码到编译、测试、部署的整个过程不需要人工干预,完全以自动化的方式实现。这种策略加快了向职能部门提交代码的速度,并确保新功能可以在第一时间部署到生产环境中并投入使用。DevOps概述

介绍完持续集成、持续交付、持续部署三大组件,再来说说DevOps。与三大件不同,DevOps更倾向于营造文化氛围。DevOps本身就是开发和运营的混合体,目的是缩短系统开发的生命周期。在这个过程中,发布特性、修复bug和更新紧密结合在一起。

听起来有点神秘,所以可以理解为DevOps是一种促进开发者和运维人员合作的文化。

DevOps的理念看起来和持续交付的理念有些相似,都是为了促进开发和运维之间的合作,但实际上它们有很大的不同:DevOps更倾向于建立一种文化,在DevOps文化的指导下,团队会包含不同技能的人(开发、测试等。),通过自动化测试和发布的方式,软件将会更快地、更高质量地生产出来。

在传统的团队组织中,开发人员和运维人员是分离的,软件开发过程被分成几个独立的环节,由不同的人员执行。这使得软件开发过程需要付出很高的沟通成本,不同层次的手工过程会在重复劳动中耗费大量时间。

在DevOps 的指导下,不同技能的人员处在同个团队中,为了一个共同的软件开发目标而工作,更好的协同工作与自动化的手段能够优化整个Code - Build - Test - Release - Operate - Code 的循环。这一理念看起来很美,用图画来说明就构成了一个和谐友好的大圈。

DevOps文化通常与持续交付相关联,因为它们都旨在增强开发人员和运营团队之间的协作,并且都使用自动流程来更快,更频繁,更可靠地构建,测试和发布软件。这些都是像我们这样的人想要的东西。尽管开发团队经常没有看到流程改进的最直接好处,但CI,CD和DevOps对我们其他人来说却有很多好处。

简而言之,我相信实践CD并拥护DevOps文化的组织将更频繁地向其客户提供更有价值,更可靠的软件。

以上知识分享希望能够帮助到大家!