CI/CD是什么?

devtools/2024/12/27 5:13:48/

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/devtools/145722.html

相关文章

什么,不用 Tomcat 也能运行 Java web?

在 Java web 开发领域,传统的 Tomcat 服务器一直占据着重要地位。但如今,Blade 框架的出现为我们提供了一种全新的开发体验,它无需依赖 Tomcat 便可运行 Java web 应用。 一、Blade 框架简介 是一款轻量级且高性能的 Java web 框架。其设计理…

PPT画图——如何设置导致图片为600dpi

winr,输入regedit打开注册表 按路径找,HKEY_CURRENT_USER\Software\Microsoft\Office\XX.0\PowerPoint\Options(xx为版本号,16.0 or 15.0或则其他)。名称命名:ExportBitmapResolution 保存即可,…

【Kafka基础】10个Kafka基础知识,面试经常会问到

前几天面试一个测试开发,问了Kafka的基础性知识,受试者没有回答出来,在项目中介绍有使用Kafka但是对kafka的基础知识掌握的却不牢固不全面,今天列出Kafka经常会问到的10个基础知识,供大家参考学习 一、你会在哪些场景选…

qt QZipWriter详解

1、概述 QZipWriter是Qt框架中用于创建ZIP文件的类。它允许开发者将多个文件和目录压缩成一个ZIP文件,支持多种压缩算法,并且易于集成到现有的Qt项目中。通过QZipWriter,开发者可以轻松实现文件的压缩、管理压缩包中的文件等功能。 需要注意…

太空探索的未来掌握在人工智能和机器人手中

一个世纪以来,全球各国一直在竞相探索太空。值得注意的是,这场竞赛并没有所谓的最终胜利。随着各国向外太空发射更多的火箭和卫星,它们获取了更多关于那些漂浮在太空中的各类物体的信息。与许多其他行业一样,太空探索过程也在采用…

大语言模型学习工具及资源总结和落地应用

当前,随着人工智能技术的迅猛发展,大语言模型(Large Language Models, LLMs)在各个领域的应用日益广泛。以下是国内外常见的大语言模型工具、已经落地部署的应用以及学习相关的网站和资源的详细介绍。 一、国内外常见的大语言模型…

以客户成功为核心,镜舟科技驱动数据库开源商业化创新

镜舟科技 CEO 孙文现 2024 年,在 StarRocks 社区朋友们和众多行业大客户的支持下,镜舟科技向前迈进了一小步,同时对于镜舟而言也是商业化推进的一大步。今年,镜舟实现了从追求市占率到追求商业成功的战略转型,并展现出…

【ETCD】【实操篇(十五)】etcd集群成员管理:如何高效地添加、删除与更新节点

etcd 是一个高可用的分布式键值存储,广泛应用于存储服务发现、配置管理等场景。为了确保集群的稳定性和可扩展性,管理成员节点的添加、删除和更新变得尤为重要。本文将指导您如何在etcd集群中处理成员管理,帮助您高效地维护集群节点。 目录 …