【测试】三张图解读 CI/CD

2023-11-19


前言

大家好,我是洋子。昨天写了一篇文章《CI/CD是什么》,介绍了持续集成,持续交付,持续部署的概念

对于初次接触CI/CD的同学,可能还是难以理解。今天我就基于上篇文章当中用到的3张图片再次解读一下CI/CD

CI/CD 的概述

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

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

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

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

CI持续集成(Continuous Integration)

持续集成,从字面意思上理解,就是不断的集成

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

举一反三,持续集成让合并到其他分支也会更加方便,开发流程一般会先合入其他分支,在测试完毕以后,在最后阶段才会合入主干
持续集成
解读一下上面这张图

  • 开发人员(代号,10101)提交代码到 Source Repository (源代码仓库,如 GitLab)
  • 有代码更新到代码仓库后,会通过 WebHook 自动触发 CI Server(持续集成服务器,如 Jenkins)的相关功能,执行编译-测试-输出结果的流程,这里的测试一般只包含单元测试,不是我们常说的点点点功能测试,也不是接口测试
  • CI Server 会将执行结果返回给开发人员

持续集成小结

  • 持续集成仅仅是让所有开发提交的代码成功集成到代码库中并正常协同工作
  • 但并没有经过测试工程师的功能测试,所以集成的代码并不能马上发布到生产环境

CD 持续交付(Continuous Delivery)

持续交付是一种软件工程方法,团队可以在短时间内生产软件,以确保可以随时可靠手动发布软件

CI 在完成了构建、单元测试这些自动化流程后,持续交付可以自动已验证的代码发布到企业自己的存储库
持续交付
解读上面这张图,与第一张持续集成的图片对比看到多了3个流程

  • 代码提交(CI已包括)
  • 单元测试(CI已包括)
  • 合入代码(CI已包括)
  • 测试(Test):接口或UI自动化测试、集成测试、系统测试等
  • 先部署到预发环境(预生产环境,Staging):测试人员在预发环境进行产品的主流程验证,验证通过再执行下一步
  • 手动部署到生产环境(Production):开发手动部署

持续交付小结

  • 持续交付是持续集成的延伸,将集成后的代码部署到类生产环境,确保以可持续的方式快速向客户发布新的更改
  • 经过持续交付,即可手动部署到生产环境
  • 持续集成的重点是集成代码,但持续交付的重点是可交付的产品。可交付的产品一定要有达标的质量,确保产品在生产环境没问题,所以在CI集成代码之后,还需要进行自动化测试、集成测试

CD 持续部署(Continuous Deployment)

通过自动化部署的手段将软件功能频繁的进行交付
持续部署
解读上图,与第二张持续交付的图片对比后,发现只有一点差别,就是自动化部署生产(Production)环境

所以说,持续部署与持续交付之间的差异就是前者将部署自动化,开发人员提交代码到编译、测试、部署的全流程都不需要人工干预,完全自动化执行

请添加图片描述

持续部署小结

  • 明确持续交付和持续部署的区别
    持续交付:代码最终部署到生产环境的过程是手动的(Manual)
    持续部署:代码最终部署到生产环境的过程是自动化的(Auto)

结尾语

CI/CD 中的“CD”指的是持续交付或持续部署

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

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

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

许多企业最开始先添加 CI,然后逐步实现交付和部署的自动化

在写这篇文章前,我基本上翻了几十篇关于CI/CD的文章,目前的心得体会,CI/CD追求的是快速和自动化。但我在百度的工作经历当中,CI阶段基本上已经完全自动化,但是在最后的上线部署阶段,还是需要人工参与

如下图,在分级上线发布时,我们除了人工验证外,还添加的上线时的自动化测试,保障质量,想要完全实现生产环境部署自动化,个人认为还是有一段比较长的路要走
在这里插入图片描述
如果你觉得这篇文章还不错的话,麻烦点一个【赞】和【在看】,让更多的小伙伴能发现它

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【测试】三张图解读 CI/CD 的相关文章

  • 以太坊如何发布NFT到opensea

    前提说明 此篇文章主要讲解 如何发布类似于网址 https killaznft com 或者 https thesevensofficial com 这种基于项目方的NFT 进行网页售卖以及上架到OpenSea上进行展示和售卖的过程 对技术

随机推荐

  • 记录帖——项目中出现的某些问题

    1 问题 自制的PCB板串口出现某些未知的错误 硬件平台 芯片是STM32F103RBT6 引出了3个串口 1个I2C SWD烧写 USART1接ESP8266 用于输出字符串 USART2接MPU6050 串口输出 USART3接GPS
  • leetcode刷题(77)——312. 戳气球

    一 题目 有 n 个气球 编号为0 到 n 1 每个气球上都标有一个数字 这些数字存在数组 nums 中 现在要求你戳破所有的气球 每当你戳破一个气球 i 时 你可以获得 nums left nums i nums right 个硬币 这里
  • jenkins项目配置的gitee显示无法连接到仓库

    jenkins项目配置的gitee显示无法连接到仓库 stderr fatal Unable to read current working directory No such file or directory 排查了半天发现git配置啥
  • CryptoJS 加密的使用方法

    因为公司的项目中用到了接口加密解密 所以百度了一下前端JS加密相关的文章 发现谷歌的CryptoJS挺好用的 因为项目用的是vue框架 记录一下项目中使用经验 首先使用npm安装CryptoJS npm install crypto js
  • 趣味数学问题的算法实现

    一 袋鼠跳跃问题 问题描述 有一只袋鼠 它跳跃一次的方式只有两种 一次跳1米 一次跳3米 现在有一段10米长的路 袋鼠从起点开始跳 问到终点有多少种不同的跳跃方式 问题分析 10米其实通过枚举就能够计算出来 但是我们要做的是给出计算任何距离
  • 玄子Share-自然语言编程(NLP)_导读篇

    玄子Share 自然语言编程 NLP 导读篇 自然语言编程 Natural Language Programming 提示工程 Prompt Engineering Prompt Engineering 介绍 Prompt Engineer
  • 软件需求工程R 第十章

    第十章 需求获取方法之观察与文档审查 常见的观察方法 1 采样观察 Sampling Observation 传统 简单的观察方法 2 民族志 Ethnography 深入到用户中 长期 浸入式的观察方法 3 话语分析 Discourse
  • 比特酒吧

    目前 区块链技术这个词非常的火爆 不少人动辄就会拿出区块链大书特书 说如何如何能够改变现有的金融模式 可是真正能够把区块链解释清楚的很少 以科学化的语言来解释区块链 区块链就是把加密数据 区块 按照时间顺序进行叠加 链 生成的永久 不可逆向
  • 停车收费系统服务器,无人值守停车场自动收费 车牌识别微信支付系统介绍

    随着智能手机及移动终端的普及 智能手机几乎人手一部 这就给 支付宝等移动支付终端提供了很好的舞台 可以这么说 现在已经进入了移动支付时代 我们去饭店吃饭可以支付 加油站加油可以支付 现在可以移动支付的地方越来越多 收费停车场由于收费金额普遍
  • Linux 配置与磁盘管理

    目录 物理设备的命名规则 Linux中硬盘分区部分 Linux在分区上建立文件系统 挂载 Linux硬盘管理工具 LVM逻辑卷管理器 物理卷 卷组合逻辑卷的建立 逻辑卷的使用 LVM整体创建流程 硬盘配额配置 针对用户或者群组使用的空间 物
  • 用Python生成组织机构代码,附源码

    usr bin python import random def haoma ww 3 7 9 10 5 8 4 2 suan fa yin zi cc dd 0 for i in range 8 gei CC fu zhi cc appe
  • virtual box之前创建的虚拟机,打开黑屏的解决办法

    virtual box之前创建的虚拟机 打开后黑屏的解决办法 我第一次使用virtual box打开创建的虚拟机时显示黑屏 是因为分配的显存不够造成的 最后自己的解决方案如下 选中对应的虚拟机 然后在右侧详情页中点击 设置 按钮 在弹出的设
  • 怎样确定AD采样频率,跟转换时间有关吗。在单片机中如何设置采样频率。

    转自百度知道https zhidao baidu com question 295921974 html 采样频率的意思是单位时间的采样次数 要确定采样频率 应该根据被测模拟量的变化动态以及测量需求决定 对于特定的硬件环境以及转换位数来说
  • 机器人编程有等级考试吗?

    很多学习机器人编程的同学 都想通过等级考试来检验自己的学习效果 通过考试发现自己的学习短板 查漏补缺 如果能取得不错的成绩 对自己的学习自信心也会有非常大的提升 机器人编程有等级考试吗 今天小贝老师就来帮助大家解答这个问题 其实 机器人编程
  • Java基础知识强化08:将字符串倒序输出(包括空格)的几种方法

    1 最容易想到的估计就是利用String类的toCharArray 再倒序输出数组的方法了 1 package himi hebao05 2 3 public class TestDemo02 4 public static void ma
  • Idea解决Java获取properties文件中值

    Idea Springboot项目解决java 获取properties文件中的值 详解 一 在使用分布式时 java 获取properties值 这里值得注意的时 Value这个注解默认可以获取到application propertie
  • 测试导入JQuery是否成功,按钮切换案例

    MDN Plus html css javascript的中文文档 望月推荐 测试导入JQuery
  • 小白转行软件测试,面试3天接到3个offer,月薪10k(程序人生)

    简介 这篇文章主要介绍了小白转行软件测试 面试3天接到3个offer 月薪10k 示例代码 以及相关的经验技巧 值得大家参考 我叫小马 来自于河北保定 毕业以来一直对自己的人生充满了迷茫 一次偶然的机会让我重新找到了方向 2015年高中毕业
  • pandas之read_csv参数详解

    最近发现pandas强大的惊人 只是不懂 多走了很多歪路 浪费开发效率 准备好好总结一下pandas pandas read csv参数 Basic filepath or buffer various sep str defaults t
  • 【测试】三张图解读 CI/CD

    文章目录 前言 CI CD 的概述 CI持续集成 Continuous Integration 持续集成小结 CD 持续交付 Continuous Delivery 持续交付小结 CD 持续部署 Continuous Deployment