CI流水线的理解

news2025/7/19 6:29:21

一、概念

单元测试:针对软件的基本单元(如:类、函数)所做的测试。

集成测试:将软件代码单元集成起来后,以组件、模块和子系统为单位进行的测试,主要测试接口间的交互关系。也称组件测试,子系统测试等。

CI/CD流水线总共包含三个阶段:持续集成、持续交付、持续部署。我整合了CSDN其他博主写的博客,在结合我的工作经验,具体的理解整理后如下:

二、持续集成CI(continuous integration)

持续集成的定义:       

        持续集成是一种软件开发实践,指的是团队成员频繁的将代码集成到主干分支的过程。一般每人每天至少集成一次,也可以多次。每次集成经过自动构建、自动(单元)测试,以尽快检测出集成错误,确认是否正确将新代码和原有代码集成在一起。

持续集成的目标:

        确保新增的代码能够与原先代码正确的集成,快速的提供一个可供测试的新版本(在测试环境中成功部署,软件可运行并且基本功能可用)。

持续集成的流程:build -> test -> result.

  1. 开发人员提交代码到Source Repository(源代码仓库),并通过git hook通知
  2. 出发 CI Server 的相关功能,执行 构建 -> 测试 -> 输出结果 的流程
  3. 生成并向开发人员发送反馈结果的report

持续集成的好处:

        1、持续集成频繁的集成可以把复杂的代码逻辑切割成小块,每完成一点更新,就集成到主干,这样可以快速发现错误,定位错误;

        2、节省人力成本,通过Jenkins自动构建和自动测试可以节省很多时间,加快软件开发进度,从而可以投入到更有价值的工作中去

        3、更细致的工作(代码)提交意味着可以更容易的判断当前的工作进度,开发流程变得易于管控。

三、持续交付CD(continuous delivery)

持续交付的定义:

        持续交付是一种能够使得软件在较短的周期中可靠地发布的软件工程方法,最终是通过手动部署到生产环境。指的是在持续集成的基础上,增加了test、staging、production 三个环节。在这个阶段,测试人员、PM在测试环境和预发布环境对最终要部署的项目进行全面且多轮的验证。

持续交付的目标: 

        拥有一个满足用户预期和质量要求的可随时部署到生产环境的代码库(新版本),确保新增的代码在生产环境中是可用的。

持续交付的流程:test -> staging ->production.

  1. Test环节,是在测试环境中对新增加的特性、功能进行全面的测试,包括了集成、功能、兼容性、安全、性能等系统测试。测试通过后,代码将自动部署到预发布环境。
  2. Staging指的是预发布环境,其尽可能模拟生产环境的真实网络拓扑、数据库及服务器硬件设备等资源,由测试人员验证代码在预发布环境中的可能表现。这个阶段,通常进行验收测试和全面回归测试(自动化测试的方式)。
  3. Production阶段将由相关人员(通常是运维)将新版本手动部署到生产环境。(如果发现问题,可以随时回滚)

四、持续部署CD(continuous deployment)

持续部署的定义:

        持续部署同样也是一种软件工程方法,通过自动化部署的方式将软件功能频繁的进行交付。

        持续部署的目标和持续交付是一致的,但实现方式上与持续交付的不同,最后部署到生产环境的过程是通过自动的方式实现的,所以说持续部署是持续交付的最高阶段。

        在持续部署下,开发同学只需提交代码,如果代码通过测试,可以全自动的部署到生产环境,所以持续部署的实现在很大程度上都得依赖精心设计的测试自动化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/396387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式Linux从入门到精通之第十五节:嵌入式系统简介

嵌入式系统的层级结构如下图所示: 开发环境 这里以三星s5pv210为开发环境: 系统资源 s5pv210是三星公司推出的32位RISC微处理器,其CPU采用的是ARM Cortex-A8内核,基于ARMv7架构 丰富的片内资源,为手持设备和其它移动领域应用,提供了低价格、低功耗、高性能的微处理器解…

nodejs学习巩固笔记-nodejs基础,Node.js 高级编程(核心模块、模块加载机制)

目录Nodejs 基础大前端开发过程中的必备技能nodejs 的架构为什么是 NodejsNodejs 异步 IONodejs 事件驱动架构全局对象全局变量之 process核心模块核心模块 - path全局变量之 Buffer创建 bufferBuffer 实例方法Buffer 静态方法Buffer-split 实现核心模块之FS模块文件操作 APImd…

Chromium HTML Video 媒体播放代码梳理

经过一番探索(参见Android 10 WebView 踩坑实录),终于搞定 Chromium WebView 的代码下载和编译问题,加下来就要向 H265 8K 高清播放发起冲锋。不过在打开 Chromium 源码后,眼前一黑。这还是熟悉的 Chromium 代码吗&…

KEIL5中头文件路劲包含问题

方式1:1.Keil中添加头文件相对路劲的方法在c/c配置中添加路劲,最终是将添加的绝对路径转化为相对路径;注意:相对路径的当前位置指.uvproj文件所在位置在C/C配置中的include paths”中添加工程所用的所有头文件的路径;2…

45岁VP:1000页PPT 10节实战课程,江湖再见!

与时舒卷,与光同尘 知识星球3年已满,受兄弟的盛请于是有了这2年10节课程 10节课程1000页自写的PPT20年的经验,N个企业不同行业的切身实际案例,王者课程,分享后江湖再见,华丽转身。 第1课 百万年薪CIO成长&…

线程、进程、协程的总结详细

线程、进程、协程的总结详细1 、进程1.1 进程是什么呢?1.2 生命周期1.3 进程同步机制1.4 进程通信机制1.4.1 管道1.4.2 消息队列1.4.3 共享内存1.4.4 信号量和PV操作1.4.5 信号1.4.6 socket1.4.7 总结 Linux 内核提供的进程通信机制2、线程2.1 线程是什么呢&#xf…

王道计算机组成原理课代表 - 考研计算机 第四章 指令系统 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 计算机组成 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!! 关于对 “指令系统” 章节知识点总结的十分全面,涵括了《计算机组成原理》课程…

【GeoDjango框架解析】conda环境下安装psycopy2版本问题

GeoDjango框架解析 【GeoDjango框架解析】配置geodjango开发环境 【GeoDjango报错处理】conda环境下安装psycopy2版本问题 文章目录GeoDjango框架解析前言一、报错:OSError: /usr/lib/libgdal.so: undefined symbol: TIFFReadRGBATileExt, version LIBTIFF_4.0二、…

代码随想录-52-257. 二叉树的所有路径

目录前言题目1.递归和回溯2. 本题思路分析:3. 算法实现4. pop函数的算法复杂度5. 算法坑点前言 在本科毕设结束后,我开始刷卡哥的“代码随想录”,每天一节。自己的总结笔记均会放在“算法刷题-代码随想录”该专栏下。 代码随想录此题链接 题…

【数字孪生百科】每周认识一个数字孪生要素 ——柱形图(Histogram, Column Diagram)

简介柱形图(Histogram, Column Diagram),又称柱状统计图、条状图、长条图或者条形图,是一种以宽度相同的长方形的长度为变量的统计图表。一般来说,柱形图只有一个变量,比较适用于较小数据集的分析。柱形图同…

HHO:闯进耳机赛道的外行人,却给整个行业带来了光

数字化时代的耳机,应该是什么样的?如果是一位在行业浸润多年的专业人士,对这个问题给出的答案应该是:更加细腻真实的音质、更好的降噪效果、更舒适的佩戴体验……作为原阿里巴巴集团副总裁、钉钉创始人CEO,踏上创业之路…

【RuoYi-Vue-Plus】学习笔记 49 - Easy Excel(三)自定义转换器 ExcelDictConvert 源码分析

文章目录前言参考目录框架集成1、Maven2、框架集成模块 ruoyi-common-excel2.1、自定义转换器 ExcelDictConvert2.2、自定义转换器注解 ExcelDictFormat2.3、Excel 工具类 ExcelUtil3、测试方法3.1、用户导入3.2、用户导出3.3、测试调用流程说明执行流程分析1、用户导出流程分析…

Dynamics 365如何动态设置表单上字段标签label的tooltips提示语。

客户要求定制一下光标放在字段标签上的tooltips提示语言。如果是静态的,可以去后台实体字段编辑页面直接修改字段的描述信息即可。 但是这里要求改成动态的显示形式:“ABC”当前用户当前时间的yyyyMMddHHmm格式的字符串。 表单onload中调用的JS函数Rese…

第十四届蓝桥杯第三期模拟赛B组C/C++原题与详解

文章目录 一、填空题 1、1 找最小全字母十六进制数 1、1、1 题目描述 1、1、2 题解关键思路与解答 1、2 给列命名 1、2、1 题目描述 1、2、2 题解关键思路与解答 1、3 日期相等 1、3、1 题目描述 1、3、2 题解关键思路与解答 1、4 乘积方案数 1、4、1 题目描述 1、4、2 题解关…

centos7 oracle19c安装 ORA-01012: not logged on

总共分三步 1.下载安装包:里面有一份详细的安装教程 链接:https://pan.baidu.com/s/1Of2a72pNLZ-DDIWKrTQfLw?pwd8NAx 提取码:8NAx 2.安装后,执行初始化:时间较长 /etc/init.d/oracledb_ORCLCDB-19c configure 3.配置环境变量,不配置环境变量,sq…

Java介绍,什么是Java?

同学们好! 第一次接触软件行业吗?没有关系,看完这篇介绍让你了解到底什么是Java?并对它强大的功能所吸引。希望你能耐心的看完,更了解软件行业,了解Java开发。 1、是不是不知道什么是Java? 官…

港科夜闻|沈向洋教授获委任为香港科大校董会主席

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、沈向洋教授获委任为香港科大校董会主席。该委任由2023年3月6日起生效,为期3年。沈教授将接替现任校董会主席廖长城先生。而廖先生亦于今天获委任为大学最高咨询机构「顾问委员会」的新一任主席,接替成…

pandas数据分析(二)

文章目录DataFrame数据处理与分析读取Excel文件中的数据筛选符合特定条件的数据查看数据特征和统计信息按不同标准对数据排序使用分组与聚合对员工业绩进行汇总DataFrame数据处理与分析 部分数据如下 这个数据百度可以搜到,就是下面这个 读取Excel文件中的数据 …

JVM实战OutOfMemoryError异常

目录 Java堆溢出 常见原因: 虚拟机栈和本地方法栈溢出 实验1:虚拟机栈和本地方法栈测试(作为第1点测试程序) 实验2:(作为第1点测试程序) 运行时常量池和方法区溢出 运行时常量池内存溢出 …

模型压缩技术综述

当今,随着深度学习技术的不断进步,越来越多的大型多模态模型被应用于自然语言处理、计算机视觉等领域。然而,这些模型往往需要数十亿甚至上百亿的参数,不仅训练时间长、计算资源消耗大,而且在实际应用中也会受到硬件、…