CI/CD是什么?

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 设置应能够随着开发团队和项目复杂性的增加而轻松扩展。这意味着它可以随着软件开发工作量的增加而有效地处理增加的工作量,从而保持生产力和效率。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes之NodeSelector与NodeName实战

目录 目标 版本 官网 概述 实战 NodeName实战 NodeSelector实战 目标 通过配置NodeSelector与NodeName实现Pod运行(或优先运行)在我们期望的节点之上。了解这两种实现方法的区别。 版本 Kubernets v1.25.0 官网 将Pod分配给节点https://kubernet…

如何构建有效的AI Agents:从复杂到简约——深度解读Claude实践总结《Building effective agents》(上)

在人工智能技术日新月异的今天,大语言模型(LLM)已经成为技术创新的热点。 然而,在追逐技术前沿的热潮中,我们是否忽视了工程设计的本质? 作为全球人工智能领域的领军企业之一,Anthropic以其在AI安全和伦理方面的深入…

高中数学刷题版:函数奇偶性[干货]

文章目录 一、奇偶性定义例题 二、运算性质1、两个函数的和差积商2、复合函数3、画草图4、对称中心与对称轴 三、奇偶性判断例题 四、根据奇偶性求解析式例题 五、单调性与奇偶性的综合应用例题 一、奇偶性定义 1、定义域都是关于原点对称。 2、解析式关系 奇函数:…

【Sentinel】流控效果与热点参数限流

目录 1.流控效果 1.1.warm up 2.2.排队等待 1.3.总结 2.热点参数限流 2.1.全局参数限流 2.2.热点参数限流 2.3.案例 1.流控效果 在流控的高级选项中,还有一个流控效果选项: 流控效果是指请求达到流控阈值时应该采取的措施,包括三种&…

【Rust自学】7.4. use关键字 Pt.2 :重导入与换国内镜像源教程

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 7.4.1. 使用pub use重新导入名称 使用use将路径导入作用域内后。该名称在词作用域内是私有的。 以上一篇文章的代码为例: m…

集装箱的纸箱和塑料箱识别数据集,使用YOLO,COCO JSON,PASICAL VOC XML格式标注,识别准确率高达97.5%

集装箱的纸箱和塑料箱识别数据集,使用YOLO,COCO JSON,PASICAL VOC XML格式标注,识别准确率高达97.5% 数据集分割 训练组88% 4605图片 有效集8% 438图片 测试集4% 219图片 预处理 自动定向&#x…

TOP K问题:利用堆排序找出数组中最小的k个数

设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。 找小的数需要建大堆来解决,首先将数组中前K个数建成一个大堆,将从k1个数直到数组结束的所有数与堆顶的数进行比较,如果比堆顶的数小,则替换堆顶的数…

VDA 学习手册

VDA(Verband der Automobilindustrie,德国汽车工业联合会)报文标准是专为汽车行业制定的电子数据交换(EDI)标准,用于支持供应链管理中的数据传输。它是由德国汽车工业联合会开发和维护的,广泛应…

自动化测试- 自动化测试模型

目录 自动化测试模型简介 1、线性模型 举例 测试页面html文件 测试脚本 2. 关键字驱动测试(Keyword-Driven Testing) 需测试内容 关键字驱动测试框架 创建测试用例文件 运行测试 3. 数据驱动测试(Data-Driven Testing) …

【Halcon】例程讲解:基于形状匹配与OCR的多图像处理(附图像、程序下载链接)

1. 开发需求 在参考图像中定义感兴趣区域(ROI),用于形状匹配和文本识别。通过形状匹配找到图像中的目标对象位置。对齐多幅输入图像,使其与参考图像保持一致。在对齐后的图像上进行OCR识别,提取文本和数字信息。以循环…

快速理解24种设计模式

简单工厂模式 建立产品接口类,规定好要实现方法。 建立工厂类,根据传入的参数,实例化所需的类,实例化的类必须实现指定的产品类接口 创建型 单例模式Singleton 保证一个类只有一个实例,并提供一个访问他它的全局…

CKA认证 | Day7 K8s存储

第七章 Kubernetes存储 1、数据卷与数据持久卷 为什么需要数据卷? 容器中的文件在磁盘上是临时存放的,这给容器中运行比较重要的应用程序带来一些问题。 问题1:当容器升级或者崩溃时,kubelet会重建容器,容器内文件会…

【JavaEE进阶】@RequestMapping注解

目录 📕前言 🌴项目准备 🌲建立连接 🚩RequestMapping注解 🚩RequestMapping 注解介绍 🎄RequestMapping是GET还是POST请求? 🚩通过Fiddler查看 🚩Postman查看 …

ROUGE指标在自然语言处理中的应用:从理论到实践

引言 你是否曾经遇到过机器生成的文本摘要与原文内容不符的情况?或者在使用机器翻译时,发现译文虽然“看起来”正确,但语义却与原文相差甚远?在自然语言处理(NLP)领域,如何科学地评估生成文本的…

编译openssl遇到错误Parse errors: No plan found in TAP output的解决方法

在编译openssl时 tar -zxvf openssl-1.1.1p.tar.gz cd openssl-1.1.1p ./config --prefix/usr --openssldir/etc/ssl --shared zlib make make test 遇到错误 Parse errors: No plan found in TAP output 解决方法: yum install perl-Test-Simple

Visual Studio 2017 配置 OpenCV 4.5.5 及二次配置的导入

重点参考: Visual Studio 2017 OpenCV_4.5.0安装_opencv4.5.0下载-CSDN博客 VS2017配置OpenCV4.5_vs2017 opencv4.5.4-CSDN博客 下载准备工作就不说了,直接从官网下载就行了。 关键就两步: 1)将OpenCV的bin目录添加到环境变量…

42 模板进阶

目录 一、非类型形参 (一)简介 (二)非类型形参与宏的区别 (三)注意点 二、模板的特化 (一)概念 (二)函数模板的特化 (三&#xff…

接口测试面试题

接口测试在软件测试中占据重要位置,无论是功能测试还是性能测试,接口的稳定性至关重要。以下总结了一些常见的接口测试面试题,帮助你从容应对面试挑战! 面试官常说:“接口测试是测试的重头戏,了解接口的设计…

使用ArcGIS/ArcGIS pro绘制六边形/三角形/菱形渔网图

在做一些尺度分析时,经常会涉及到对研究区构建不同尺度的渔网进行分析,渔网的形状通常为规则四边形。构建渔网的方法也很简单,使用ArcGIS/ArcGIS Pro工具箱中的【创建渔网/CreateFishnet】工具来构建。但如果想构建其他形状渔网进行相关分析&…

在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件

在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件 一、RTP流与WAV文件格式二、实现步骤三、伪代码示例四、C语言示例代码五、关键点说明六、总结在Linux操作系统上,从媒体服务器(如Media Server,简称MS)获取RTP(Real-time Transport Protocol)流…