CI/CD是什么?

embedded/2024/12/28 15:20:16/

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.ppmy.cn/embedded/149104.html

相关文章

各种垃圾回收器介绍

引言 在Java虚拟机(JVM)中,垃圾回收(Garbage Collection, GC)是自动内存管理的关键部分。它负责回收不再使用的对象所占用的内存空间,从而确保程序运行时有足够的内存可用。随着Java应用的发展&#xff0c…

【全栈开发】----用pymysql库连接MySQL,批量存入

本文基于前面的MySQL基础语句使用,还不会的宝子可以先回去看看: 全栈开发----Mysql基本配置与使用-CSDN博客 仅仅用控制台命令对数据库进行操作,虽然大部分操作都很简单,但对于大量数据的存入,存储数据将会变得很繁琐&…

企业架构学习笔记-数字化转型

1. 企业数字化发展阶段 案例1.业务部门“点菜”,IT部门叫苦 随着企业信息化进程的不断推进,IT部门的角色和面临的挑战也在发生显著变化。在信息化建设的初级阶段,确实存在IT部门需要积极引导和说服业务部门重视信息技术价值的情况。当时&am…

【读书笔记】《论语别裁》秃头的十字架

1.内容摘要 《论语别裁》第01章讨论了中西文化在家庭和亲情方面的差异,特别是“孝”和“弟”的概念。作者认为西方文化自称为十字架文化,重视下一代的爱,但忽视了对长辈的关爱和对血缘关系的重视。而中国文化强调的“孝”不仅仅是对父母的爱…

uni-app:监听页面返回,禁用返回操作

文章目录 1. 重写 uni.navigateBack 方法2. 改进方案:确保只在当前页面拦截返回操作 在 UniApp 开发中,有时我们需要在满足特定条件时,禁止用户执行返回上一页面的操作。常见的需求是,当用户在某个页面进行某些操作时(…

C语言勘破之路-最终篇 —— 预处理(上)

人无完人,持之以恒,方能见真我!!! 共同进步!! 文章目录 一、预定义符号二、#define定义常量三.、#define定义宏四、带有副作用的宏参数五、宏替换的规则六、宏和函数的对比1.宏的优势2.函数的优…

AI视觉算法之朴素贝叶斯算法的合理利用

前言 在人工智能领域,视觉算法是一类重要的技术,用于处理和分析图像数据。朴素贝叶斯算法是一种基于概率的分类方法,它假设特征之间相互独立,因此非常适合处理高维数据集。本文将介绍朴素贝叶斯算法在AI视觉中的应用,…

【LeetCode 面试经典150题】详细题解之矩阵篇

【LeetCode 面试经典150题】详细题解之矩阵篇 1 矩阵的基础1.1 表示矩阵1.2 创建矩阵相关题目 2 36.有效的数独 (需要复习)分析代码 3 54.螺旋矩阵(需要复习)分析代码 4 48.旋转图像思路代码 5 73.矩阵置零 (一遍过&am…