CI/CD是什么?

news2025/2/12 16:10:29

CI/CD 定义

CI/CD 代表持续集成和持续部署(或持续交付)。它是一套实践和工具,旨在通过自动化构建、测试和部署来改进软件开发流程,使您能够更快、更可靠地交付代码更改。

  • 持续集成 (CI):在共享存储库中自动构建、测试和集成代码更改

  • 持续交付 (CD):自动将代码变更交付至生产环境以供批准

  • 持续部署(CD):自动将代码更改直接部署给客户

自动化是实现 DevOps 成功的核心原则,而 CI/CD 是关键组成部分。CI/CD 包括持续集成和持续交付或持续部署。它们合在一起形成了一个“CI/CD 管道”——一系列自动化工作流程,可帮助 DevOps 团队减少手动任务。

CI/CD 管道

流程图显示 CI/CD 中的步骤,包括规划、编码、构建、测试、创建工件、登台和生产。

持续交付与持续部署

当有人说 CI/CD 时,他们所指的“CD”通常是持续交付,而不是持续部署。两者有什么区别?在使用持续交付的 CI/CD 管道中,当开发人员将产品推送到生产环境时,自动化会暂停。人员(您的运营、安全或合规团队)仍需要在最终发布之前手动签名,这会增加更多延迟。另一方面,持续部署可自动化整个发布过程。代码更改在通过所有必需的测试后立即部署给客户。

持续部署是DevOps 自动化
的终极示例。但这并不意味着它是实施 CI/CD 的唯一方法或“正确”方法。由于持续部署依赖于严格的测试工具和成熟的测试文化,因此大多数软件团队都从持续交付开始,并随着时间的推移集成更多自动化测试。

为什么选择 CI/CD?

简短的回答是:速度。《DevOps 现状》报告
发现,已“掌握”CI/CD 的组织部署频率比其他组织高 208 倍,交付周期比其他组织快 106 倍。虽然更快的开发速度是 CI/CD 最广为人知的好处,但持续集成和持续交付管道可以实现更多好处。

  • 开发速度:持续的反馈允许开发人员更频繁地提交较小的更改,而不是等待一次发布。

  • 稳定性和可靠性:自动化、持续的测试确保代码库保持稳定并随时可以发布。

  • 业务增长:从手动任务中解放出来后,组织可以将资源集中在创新、客户满意度和偿还技术债务上。

构建你的 CI/CD 工具包

团队通过结合自动化流程、步骤和工具,将 CI/CD 作为其开发工作流程的一部分。

  • 版本控制:CI 始于共享存储库,团队使用 Git 等版本控制系统 (VCS) 协作编写代码。VCS 可跟踪代码更改、简化恢复,并支持以代码形式配置来管理测试和基础架构。

  • 构建:CI 构建工具会自动将文件和组件打包成发布工件,并针对质量、性能和其他要求运行测试。完成必要的检查后,CD 工具会将构建发送给运营团队进行进一步测试和准备。

  • 审查和批准:将代码审查视为最佳实践可提高代码质量、鼓励协作,甚至帮助最有经验的开发人员做出更好的承诺。在 CI/CD 工作流程中,团队审查和批准代码或利用集成开发环境进行结对编程。

  • 环境:CI/CD 在环境中测试和部署代码,从开发人员构建代码的地方到运营团队公开发布应用程序的地方。环境通常有自己的特定变量和保护规则,以满足安全性和合规性要求。

CI/CD 工作流程示例

CI/CD 不一定很复杂,也不一定意味着在当前工作流程之上添加大量工具。

mabl
,开发人员每周仅使用两个 CI/CD 集成部署到生产环境约 80 次:mabl 测试套件和 GitHub Actions。以下是它的工作原理。

CI/CD 流程图展示了 mabl 如何部署到生产环境

  1. 开发人员打开拉取请求以触发初始构建和单元测试

  2. 已批准的提交将部署到预览环境

  3. 定制的 GitHub Actions 安装 mabl CLI 并运行无头测试

  4. GitHub Apps 在拉取请求中提供实时检查结果

  5. 已批准的提交将合并到主分支以进行其他测试或部署到生产中

什么使 CI/CD 成功

您会发现,无论在哪里,都有不同的工具和集成,但有效的 CI/CD 工作流程都具有相同的成功标志。

  • 自动化:CI/CD可以手动完成,但这不是目标。良好的 CI/CD 工作流程
    可自动完成构建、测试和部署,因此您有更多的时间编写代码,而不是执行更多任务。

  • 透明度:如果构建失败,开发人员需要能够快速评估出了什么问题以及原因。日志、可视化工作流构建器和深度集成的工具使开发人员能够更轻松地排除故障、了解复杂的工作流并与更大的团队分享他们的状态。

  • 速度:CI/CD 会影响您的整体 DevOps 性能,尤其是速度。DevOps 专家使用两个DORA 指标
    来衡量速度:变更前置时间(生产中代码提交的速度)和部署频率(提交代码的频率)。

  • 弹性:当与测试覆盖率、可观察性工具和功能标记等其他方法一起使用时,CI/CD 可以使软件更能抵抗错误。DORA 通过跟踪平均解决时间(事件解决的速度)和变更失败率(软件回滚的次数)来衡量这种稳定性。

  • 安全性:自动化包括安全性
    。随着 DevSecOps 的普及,面向未来的 CI/CD 管道可以检查代码和权限,并为审计失败、安全漏洞、不合规事件提供虚拟纸质记录。

  • 可扩展性:CI/CD 不仅涉及自动化,还涉及确保可扩展性。强大的 CI/CD 设置应能够随着开发团队和项目复杂性的增加而轻松扩展。这意味着它可以随着软件开发工作量的增加而有效地处理增加的工作量,从而保持生产力和效率。

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

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

相关文章

Vue中动态样式绑定+CSS变量实现切换明暗主题功能——从入门到进阶

1.直接借助Vue的动态绑定样式绑定 Vue动态样式绑定 在Vue中,动态样式绑定是一种强大的功能,它允许开发者根据数据的变化动态地更新元素的样式。以下是对Vue动态样式绑定的详细知识梳理与详解: 一、基础知识 Vue的动态样式绑定主要通过v-b…

科汛网校KesionEDU CheckOrder SQL注入漏洞复现

0x01 产品简介 科汛网校KesionEDU是KESION科汛开发的在线教育建站系统,支持在线直播教学、课程点播、录播授课等多种教学方式,满足不同场景下的教学需求。提供问答互动、学习点评、在线笔记等功能,增强学员与教师之间的互动交流。拥有在线考试系统,支持单选、多选、问答等…

Windows Subsystem for Linux——设置默认登录用户名

大纲 问题解法 问题 在《Windows Subsystem for Linux——安装多个相同的操作系统》一文中,我们实现了子系统的导出和导入,但是也带来了一个问题:登录到系统时,会使用root用户。在一些场景下,这并不符合我们的使用场景…

【编译原理】往年题汇总(山东大学软件学院用)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀编译原理_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …

智慧农业物联网传感器:开启农业新时代

在当今科技飞速发展的时代,农业领域正经历着一场前所未有的变革,而智慧农业物联网传感器无疑是这场变革中的关键利器。它宛如农业的 “智慧大脑”,悄然渗透到农业生产的各个环节,为传统农业注入了全新的活力,让农业生产…

观察者模式和发布-订阅模式有什么异同?它们在哪些情况下会被使用?

大家好,我是锋哥。今天分享关于【观察者模式和发布-订阅模式有什么异同?它们在哪些情况下会被使用?】面试题。希望对大家有帮助; 观察者模式和发布-订阅模式有什么异同?它们在哪些情况下会被使用? 1000道 …

C# OpenCvSharp DNN 卡证检测矫正

目录 说明 效果 模型 项目 代码 下载 参考 说明 源码地址:https://modelscope.cn/models/iic/cv_resnet_carddetection_scrfd34gkps 在实人认证、文档电子化等场景中需要自动化提取卡证的信息,以便进一步做录入处理。这类场景通常存在两类问题&…

前端入门之VUE--ajax、vuex、router,最后的前端总结

前言 VUE是前端用的最多的框架;这篇文章是本人大一上学习前端的笔记;欢迎点赞 收藏 关注,本人将会持续更新。本人不是学前端的,这个是大一的时候上学的和做的笔记,那个时候学的也蒙,故这里对前端做一个总…

要查询 `user` 表中 `we_chat_subscribe` 和 `we_chat_union_id` 列不为空的用户数量

文章目录 1、we_chat_subscribe2、we_chat_union_id 1、we_chat_subscribe 要查询 user 表中 we_chat_subscribe 列不为空的用户数量,你可以使用以下 SQL 查询语句: SELECT COUNT(*) FROM user WHERE we_chat_subscribe IS NOT NULL;解释: …

RocketMQ的集群架构是怎样的?

大家好,我是锋哥。今天分享关于【RocketMQ的集群架构是怎样的?】面试题。希望对大家有帮助; RocketMQ的集群架构是怎样的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RocketMQ 是阿里巴巴开源的分布式消息中间件,广泛用于处…

使用DynadotAPI查看域名清仓中的过期域名列表

前言 Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮箱&…

uni-app 中使用微信小程序第三方 SDK 及资源汇总

🎀🎀🎀uni-app 跨端开发系列 🎀🎀🎀 一、uni-app 组成和跨端原理 二、uni-app 各端差异注意事项 三、uni-app 离线本地存储方案 四、uni-app UI库、框架、组件选型指南 五、uni-app 蓝牙开发 六、uni-app …

探索 Pencils Swap 的叙事:为 DeFi 的再次爆发蓄力

Pencils Protocol 最初是 Scroll 生态上一个综合性的 DeFi 平台,以 Farming、Vaults 以及 Auction 等系列产品板块为基础,其不仅成为了 Scroll 上重要的流动性、收益枢纽,同时也是重要的 LaunchPad 市场以及流量池,为 Scroll 生态…

基于STM32单片机矿井矿工作业安全监测设计

基于STM32单片机矿井矿工作业安全监测设计 目录 项目开发背景设计实现的功能项目硬件模块组成设计思路系统功能总结使用的模块技术详情介绍总结 1. 项目开发背景 随着矿井矿工作业环境的复杂性和危险性逐渐增加,矿井作业安全问题引起了社会各界的广泛关注。传统的…

数学建模与数学建模竞赛

什么是数学建模? 数学建模是通过数学的方法和工具,对现实世界的一个特定对象,依据其内在规律,做出一些必要的简化假设,从而建立一个数学结构的过程。数学建模的历史和数学的起源几乎同步开始,2000多年前&a…

stm32四联七段数码管,LED8*8点阵

一、七段数码管的整体代码和仿真 1)代码 seg74.c #include "stm32f10x.h" // Device headervoid seg74_init(void) {GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(…

SpringCloudAlibaba技术栈-Dubbo

1、什么是Dubbo? 简单来说,dubbo就像是个看不见的手,负责专门从注册中心nacos调用注册到nacos上面的服务的,因为在微服务环境下不同的功能模块可能在不同的服务器上。dubbo调用服务就像是在调用本地的服务一样。 分布式调用与高并发处理 Du…

“AI智能安全管理系统:让安全无处不在

嘿,大家好!今天咱们来聊聊一个超级酷炫又至关重要的东西——AI智能安全管理系统。想象一下,如果有一个系统可以像私人保镖一样24小时不间断地保护你和你的财产,是不是感觉特别安心?这就是AI智能安全管理系统带给我们的…

【hackmyvm】soul靶机wp

tags: HMVrbash绕过图片隐写PHP配置解析 1. 基本信息^toc 文章目录 1. 基本信息^toc2. 信息收集3. 图片解密3.1. 爆破用户名3.2. 绕过rbash3.3. 提权检测 4. 获取webshell4.1. 修改php配置 5. www-data提权gabriel6. gabriel提取到Peter7. Peter提权root 靶机链接 https://ha…

PaddleOCR训练自己的私有数据集(包括标注、制作数据集、训练及应用)

目录 一、制作数据集 1、进入到PaddleOCR-releas-2.7目录 2、首先启用PPOCRLabel:在终端激活环境 3、接着点击左下角的自动标注 4、确认完成后点击左上角 5、新建gen_ocr_train_val_test.py 二、训练文字检测模型 1、模型下载 2.、配置ppocr检测模型文件 …