前言:

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

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

我心想:什么是 CI/CD?

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


目录

一、CI/CD 的概述

二、CI 持续集成(Continuous Integration)

三、CD 持续交付(Continuous Delivery)

四、CD 持续部署(Continuous Deployment)

五、CI 和 CD 有什么区别?

一、CI/CD 的概述

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

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

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

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

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

二、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”)指的是自动将开发人员的更改从存储库发布到生产环境,以供客户使用。

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

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

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

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

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

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

一文带你走进CI/CD相关推荐

  1. 一文带你走进C++【内存泄漏】

    背景 ​没想到项目放到线上后,随着请求量的增多,却感觉到首屏速度越来越慢,并且是在持续性地变慢.而且在发布完后(也就是容器重建了),耗时又陡然降下来了. ​因此很合理地怀疑是内存泄漏了.故而在 STK ...

  2. 携程运维总监手把手带你上手CI/CD

    从业几年,你肯定听说过CI/CD之类的词.对于一家公司或者一个创业团队来说,持续集成.持续交付将会大幅度提升团队的协同效率,并保证软件按时按质交付. 但今天我想说,持续交付也是中高级程序员的关键能力, ...

  3. 仓鼠体重年龄对照表_一文带你走进仓鼠世界:仓鼠种类之叙利亚仓鼠(上)

    (宠鼠百科第76期) 今天咱们要谈的是仓鼠中的巨无霸--叙利亚仓鼠,又名金丝熊,黄金鼠.叙利亚仓鼠,很显然祖籍叙利亚,是位来自戈壁荒漠的浪子.叙利亚仓鼠体长12~15厘米,尾长1~1.5厘米,体重10 ...

  4. 【中兴】web训练营~一文带你走进前端 百图制作

    ??作者简介:物联网领域创作者,??阿里云专家博主?? ??华为云享专家?? 个人主页:Choice~ ??格言:可正因为难,才有价值!?? ??系列专栏: 1 C/C++ 2 C和指针 3 Linu ...

  5. 一文带你走进网络编程

    网络编程 什么是网络编程: 就是用来实现网络互通的不同计算机运行程序之间进行数据的交换的编程 网络模型 OSI(模型):七层协议 应用层: 如: HTTP协议 主要解决如何包装数据,用于通信的应用程序 ...

  6. 一文带你走进Docker

    Docker 基础知识 三要素 下载安装 开始使用 Docker Run 运行流程 Docker和Vm虚拟机对比 Dockers为什么会比虚拟机更快 Docker命令 帮助启动类 镜像命令 docke ...

  7. 一文带你走进软路由和 OpenWrt 系统

    软路由 VS 硬路由 先说说硬路由,顾名思义就是通过专用硬件电路实现的路由器.大家家里用的路由器(比如 TP-LINK.华为.水星等)基本都是硬路由,它们内部的硬件电路是专门为数据包转发和通信功能量身 ...

  8. 一文带你走进seo,新手必须了解的seo知识你知道吗

    互联网的极速发展催生了一系列行业的发展,在此基础上又衍生出了许多的新生职位和行业,互联网的发展少不了网站和网页,建站在近些年来的也逐渐的由纯代码建站演变到可使用建站软件快捷建站,站长们只需了解一些建站 ...

  9. python vector 初始化_一文带你走进Python中的数据类

    全文共2607字,预计学习时长14分钟 图源:unsplash 数据类适用于Python3.7或更高版本,它不仅可以用作数据容器,还可以编写样板代码,简化创建类的过程. 创建第一个数据类 创建一个数据 ...

最新文章

  1. 面试官:BigDecimal一定不会丢失精度吗?
  2. 关于重载函数的一些学习
  3. C/Cpp / STL / vector 的 erase 会造成当前位置和之后的迭代器失效的疑问
  4. Azkaban实战,Command类型单一job示例,任务中执行外部shell脚本,Command类型多job工作flow,HDFS操作任务,MapReduce任务,HIVE任务
  5. 静态属性,函数闭包,call/apply,继承
  6. 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
  7. 「作文素材详解」写作必知篇:语言优美不是作文第一要求
  8. D3.js、echar.js 前端必备大数据技能
  9. 3d正方体旋转相册代码_3d旋转正方体的多种html和css制作方法和相关知识复习讲解
  10. 消息中间件--RabbitMQ ---TTL队列/消息
  11. 警惕 | 警惕,mybatis的size()方法竟然有坑!
  12. php类的实例化方法吗,php实例化一个类的具体方法
  13. 痕迹清理 - Windows
  14. STM32学习记录0005——JLINK下载与调试
  15. gmap 支持python吗_在gmap中使用bokeh的python为for circle添加工具提示
  16. 顺丰控股2019财报解读
  17. 3月12日公开短线黑马牛股请点击验证
  18. 【最近抖音上元宇宙虚拟项目七国争霸,直播互动游戏源码解析】
  19. IP地址划分(子网划分)及是否同一网段计算
  20. 300行代码带你进入叙/丽/亚轰炸战场

热门文章

  1. centos dns 修改配置
  2. C语言分数相加并将最后结果化为最简分式(新手程序!!!)
  3. java计算机毕业设计Internet快递柜管理系统(附源码、数据库)
  4. 2022年程序员开工第一周,应该收藏这样一份书单
  5. 实战分析!三面蚂蚁核心金融部,稳进大厂
  6. 大数据相加_c 大数据相加 class
  7. 【数据压缩】作业1-1:对浊音、清音、爆破音进行音频分析
  8. python编写程序公式计算s_python pandas库和stats库计算偏度和峰度(附程序)
  9. 华为笔记本换装linux双系统,matebook的win+ubuntu双系统安装方法
  10. win10 无法选择无限网络连接服务器,Win10可以连接无线网络却无法上网的原因及解决方法...