一文带你走进CI/CD

简介: ​前言:前几天在阿里云的大咖问答板块瞎逛遇到一个同学的问题吸引到了我:CI/CD Not Found?我心想:什么是 CI/CD?虽然很丢人,但咱也不能说谎不是。赶紧学习才是正道。 目录一、CI/CD 的概述CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。它是作为一个面向开发和运营团队的解决方案,主要针对在集成新代码时所引发的问题(也称为:“集成地狱”)。CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联

前言:

前几天在阿里云的大咖问答板块瞎逛

遇到一个同学的问题吸引到了我:CI/CD Not Found?

我心想:什么是 CI/CD?

虽然很丢人,但咱也不能说谎不是。赶紧学习才是正道。

image.gif编辑

 


目录

一、CI/CD 的概述

二、CI 持续集成(Continuous Integration)

三、CD 持续交付(Continuous Delivery)

四、CD 持续部署(Continuous Deployment)

五、CI 和 CD 有什么区别?

一、CI/CD 的概述

CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。

CI/CD 的核心概念是持续集成、持续交付和持续部署。它是作为一个面向开发和运营团队的解决方案,主要针对在集成新代码时所引发的问题(也称为:“集成地狱”)。

CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。

这些关联的事务通常被统称为 CI/CD 管道,由开发和运维团队以敏捷方式协同支持。

哦!原来是这个东东。其实平时开发需求都在用集成平台,但是却不知道它背后的概念。

image.gif编辑

 

二、CI 持续集成(Continuous Integration)

协同开发是目前主流的开发方式,也就是多位开发人员可以同时处理同一个应用的不同模块或者功能。

但是,如果企业计划在同一天,将所有开发分支代码集成在一起,最终可能会花费很多时间和进行很多重复劳动,费事费力。因为代码冲突是难以避免的。

如果开发人员本地的环境和线上不一致的话,那么这个问题就更加复杂了。

持续集成(CI)可以帮助开发者更加方便地将代码更改合并到主分支。

一旦开发人员将改动的代码合并到主分支,系统就会通过自动构建应用,并运行不同级别的自动化测试(通常是单元测试和集成测试)来验证这些更改,确保这些更改没有对应用造成破坏。

如果自动化测试发现新代码和现有代码之间存在冲突,CI 可以更加轻松地快速修复这些错误。

三、CD 持续交付(Continuous Delivery)

CI 在完成了构建、单元测试和集成测试这些自动化流程后,持续交付可以自动把已验证的代码发布到企业自己的存储库。

持续交付旨在建立一个可随时将开发环境的功能部署到生产环境的代码库。

在持续交付过程中,每个步骤都涉及到了测试自动化和代码发布自动化。

在流程结束时,运维团队可以快速、轻松地将应用部署到生产环境中。

四、CD 持续部署(Continuous Deployment)

对于一个完整、成熟的 CI/CD 管道来说,最后的阶段是持续部署。

它是作为持续交付的延伸,持续部署可以自动将应用发布到生产环境。

实际上,持续部署意味着开发人员对应用的改动,在编写完成后的几分钟内就能及时生效(前提是它通过了自动化测试)。这更加便于运营团队持续接收和整合用户反馈。

总而言之,所有这些 CI/CD 的关联步骤,都极大地降低了应用的部署风险。

不过,由于还需要编写自动化测试以适应 CI/CD 管道中的各种测试和发布阶段,因此前期工作量还是很大的。

五、CI 和 CD 有什么区别?

CI/CD 中的“CI”始终指持续集成,它属于开发人员的自动化流程。

成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。

该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。

CI/CD 中的“CD”指的是持续交付和/或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。

持续交付(第一种CD)通常是指开发人员对应用的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器注册表),然后由运维团队将其部署到实时生产环境中。

这旨在解决开发和运维团队之间可见性及沟通较差的问题。

因此,持续交付的目的就是确保尽可能减少部署新代码时所需的工作量。

持续部署(另一种“CD”)指的是自动将开发人员的更改从存储库发布到生产环境,以供客户使用。

它主要为了解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题。持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化。

所以,用一张图总结一下就是:

image.gif编辑

CI/CD 既可能仅指持续集成和持续交付构成的关联环节,也可以指持续集成、持续交付和持续部署这三项构成的关联环节。

更为复杂的是,有时“持续交付”也包含了持续部署流程。

归根结底,我们没必要纠结于这些语义,您只需记得 CI/CD 其实就是一个流程(通常形象地表述为管道),用于实现应用开发中的高度持续自动化和持续监控。

许多企业最开始先添加 CI,然后逐步实现交付和部署的自动化(例如作为云原生应用的一部分)。

 

相关文章
|
Java C#
标题:深入比较Else If与Switch语句:理解差异与高效使用Switch
标题:深入比较Else If与Switch语句:理解差异与高效使用Switch
627 0
|
监控 安全 测试技术
现在公司都在用的CI/CD框架到底是什么?
现在公司都在用的CI/CD框架到底是什么?
5913 1
|
存储 监控 Devops
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
|
运维 监控 测试技术
自动化运维实践:CI/CD流程详解
【6月更文挑战第30天】CI/CD实践推动软件开发自动化,通过持续集成确保代码质量,自动部署提升交付速度。核心流程包括:代码管理(Git等)、自动化构建与测试、代码审查、部署。关键点涉及选择工具、测试覆盖率、监控及团队协作。采用CI/CD能减少错误,但需应对挑战,如工具选型、全面测试和团队沟通。
3337 2
|
网络协议 安全 网络安全
|
jenkins Java 测试技术
CI/CD 流水线的设计与实施
【8月更文第30天】持续集成(Continuous Integration, CI)和持续交付(Continuous Delivery, CD)是现代软件开发中的重要组成部分。CI/CD 不仅可以加速产品的发布周期,还能提高软件的质量并减少部署过程中的风险。本文将详细介绍 CI/CD 流水线的设计与实施,并提供一些实用的工具和最佳实践。
1464 2
|
安全 NoSQL Linux
常见的挖矿木马
常见的挖矿木马
411 1
|
存储 监控 jenkins
利用CI/CD实现快速迭代与部署
【7月更文挑战第9天】CI/CD实践通过自动化构建、测试和部署流程,极大地提高了软件开发的效率和质量。通过选择合适的CI/CD工具、配置代码存储库、定义CI/CD管道、自动化测试和反馈以及自动化部署,团队可以更加高效地迭代和部署软件产品。希望本文能为您的CI/CD实践提供一些参考和帮助。
|
人工智能 安全 Devops
让研发规范管得住,在流水线之上做研发流程
研发规范的目标,是为了解决或降低出现软件危机的风险。但传统流水线受限于工具的定位,无法解决研发规范的落地问题,需要在更高的层面来解决。阿里云云效团队经过内部启发后推出的新产品:云效应用交付平台 AppStack 给出了解决方案,快来使用体验吧!
79803 7
|
人工智能 自然语言处理 BI
2023年国内AI Agent下项目大盘点,科技大厂与创业公司齐头并进
2023年都有哪些国内厂商推出了AI Agent?哪些厂商成功融资?对创业有什么启示?一文看明白。
2765 0