你真的懂持续集成、持续交付、持续部署吗?!

简介: 你真的懂持续集成、持续交付、持续部署吗?!

什么是集成?


在传统的软件开发中,集成通常是在每个人完成工作后的项目结束时进行

 

实际栗子

  • 现在有一个电商平台需要开发
  • 由于电商平台模块众多,需要不同的开发人员开发不同的模块【本地开发】
  • 最后将所有人开发好的代码集成到一个系统中【提交代码到远程仓库】
  • 集成完成后需要对其进行部署上线
  • 随着时间的推移,该系统无论是 Bug 修复,还是新功能开发,后续都需要对系统进行不断的更新迭代
  • 重点:所有人最终开发完才集成


image.png


什么是持续集成 CI?


  • 持续集成指的是,频繁地(一天多次)将所有开发者的代码集成到主干
  • 简单理解:重复集成的工作

 

持续集成的流程

image.png

  1. 开发人员(10101)提交代码到 Source Repository (源代码仓库,如 Gitlab)
  2. 有代码更新到代码仓库后,会通过 WebHook 触发 CI Server(持续集成服务器,如 Jenkins)的相关功能,执行编译-测试-输出结果的流程
  3. CI Server 会将执行结果返回给开发人员

 

注意

这里的测试并不是常规的功能测试,而是针对代码的单元测试

 

持续集成的好处

快速发现错误

  • 每完成一点更新,就集成到主干,相当于将一个复杂的模块细分成一个个小模块
  • 每次小模块集成后再进行测试,可以快速发现错误,定位错误更加容易

 

节省人力成本,加快软件开发进度

  • 如果 Build-Test 这种重复性工作需要人工执行将会耗费很多时间
  • 现在交给 CI Server 自动化执行,节约了很多时间,从而投入到有价值的工作中去

 

控制开发流程,实时交付

  • 细分的代码提交,可以更容易判断当前的开发进度
  • 这让管理者更容易管控整个开发流程,从而保证产品实时交付

 

易于 CodeReview

对于大块工作的切分自然也有助于做 CodeReview

 

持续集成的核心

确保新增的代码能够与原有代码正确的集成

 

持续集成的目的

让产品可以快速迭代,同时还能保持高质量,简化工作流程

 

核心措施

  • 代码集成到主干之前,先进行自动化单元测试
  • 只要有一个测试用例失败,就不能集成
  • 持续集成并不能完全的消除 Bug,而是让它们非常容易发现和改正

 

什么情况下需要持续集成

  • 如果项目开发的规模比较,就不需要持续集成
  • 如果项目很,需要不断添加新功能或不断的升级产品,代表需要反复集成,这个时候就需要用到持续集成来简化我们的工作

 

重点

  • 持续集成仅仅是让所有开发提交的代码成功集成到系统中并正常协同工作
  • 但并没有经过测试工程师的测试和严重,所以集成的代码并不能马上发布到生产环境

 

什么是持续交付 CD?


wiki 给的说明

持续交付是一种软件工程方法,团队可以在短时间内生产软件,以确保可以随时可靠地发布软件,并且在发布软件时,可以手动进行发布。

 

简单理解

频繁地将软件的新版本,交付给质量团队或者用户,以供测试/评审。如果测试/评审通过,代码就进入生产阶段

 

持续交付的流程

image.png

  1. 代码提交
  2. 单元测试
  3. 集成代码
  4. 测试(Test):这里不仅仅是单元测试,还可能包含功能测试、集成测试、系统测试等
  5. 先部署到预发环境(预生产环境,Staging):测试人员在预发环境进行产品的主流程验证,验证通过再执行下一步
  6. 手动部署到生产环境(Production):开发手动部署

 

持续交付的重点

  • 持续集成的重点是代码,但持续交付的重点是可交付的产品
  • 可交付的产品一定要有达标的质量,确保产品在生产环境没问题,所以在成功集成代码之后,还需要进行测试(TEST)

 

什么是持续部署 CD?


wiki 给的说明

通过自动化部署的手段将软件功能频繁的进行交付

 

通俗理解

  • 持续部署是持续交付的下一步
  • 代码在任何时刻都能部署
  • 最后将部署到生产环境的过程自动化

 

和持续交付的区别

  • 持续交付:代码最终部署到生产环境的过程是手动的(Manual)
  • 持续部署:代码最终部署到生产环境的过程是自动化的(Auto)

 

持续部署的流程

image.png

  • 将最后一步的 Production 自动化
  • 开发人员提交代码到编译、测试、部署的全流程都不需要人工干预,完全自动化执行

 

持续部署的优势

这一策略加快了代码提交到功能上线的速度,保证新的功能能够第一时间部署到生产环境并被使用

 

持续部署的不足

  • 全流程自动化,无法保证质量,哪一步出问题了无法提前预知
  • 目前一个产品正常发布到生产环境,还是需要测试工程师进行手工功能测试的
  • 所以持续交付更主流,因为它算半自动化




相关文章
|
监控 前端开发 测试技术
如何实现前端工程化的持续集成和持续部署?
通过以上步骤,可以建立一套完整的前端工程化 CI/CD 流程,实现前端代码从开发、测试、构建到部署的全自动化,提高开发效率、保证代码质量,快速响应用户需求和市场变化。
|
9月前
|
弹性计算 机器人 应用服务中间件
一键部署开源Qwen3并集成到钉钉、企业微信
Qwen3系列模型现已正式发布并开源,包含8款“混合推理模型”,其中涵盖两款MoE模型(Qwen3-235B-A22B与Qwen3-30B-A3B)及六个Dense模型。阿里云计算巢已支持Qwen3-235B-A22B和Qwen3-32B的私有化部署,用户可通过计算巢轻松完成部署,并借助AppFlow集成至钉钉机器人或企业微信。文档详细介绍了从模型部署、创建应用到配置机器人的全流程,帮助用户快速实现智能助手的接入与使用。
900 19
一键部署开源Qwen3并集成到钉钉、企业微信
|
7月前
|
存储 文字识别 自然语言处理
通义大模型在文档自动化处理中的高效部署指南(OCR集成与批量处理优化)
本文深入探讨了通义大模型在文档自动化处理中的应用,重点解决传统OCR识别精度低、效率瓶颈等问题。通过多模态编码与跨模态融合技术,通义大模型实现了高精度的文本检测与版面分析。文章详细介绍了OCR集成流程、批量处理优化策略及实战案例,展示了动态批处理和分布式架构带来的性能提升。实验结果表明,优化后系统处理速度可达210页/分钟,准确率达96.8%,单文档延迟降至0.3秒,为文档处理领域提供了高效解决方案。
840 1
|
8月前
|
JSON 缓存 并行计算
NVIDIA 实现通义千问 Qwen3 的生产级应用集成和部署
阿里巴巴近期开源了通义千问Qwen3大语言模型(LLM),包含两款混合专家模型(MoE)235B-A22B与30B-A3B,以及六款稠密模型(Dense)从0.6B到32B不等。开发者可基于NVIDIA GPU使用TensorRT-LLM、Ollama、SGLang、vLLM等框架高效部署Qwen3系列模型,实现快速词元生成和生产级应用开发。
|
11月前
|
人工智能 Kubernetes jenkins
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
|
6月前
|
物联网 Linux 开发者
快速部署自己私有MQTT-Broker-下载安装到运行不到一分钟,快速简单且易于集成到自己项目中
本文给物联网开发的朋友推荐的是GMQT,让物联网开发者快速拥有合适自己的MQTT-Broker,本文从下载程序到安装部署手把手教大家安装用上私有化MQTT服务器。
1776 5
|
8月前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
601 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
11月前
|
弹性计算 人工智能 应用服务中间件
一键部署开源DeepSeek并集成到企业微信
DeepSeek近期发布了两款先进AI模型V3和R1,分别适用于通用应用和推理任务。由于官方API流量过大,建议通过阿里云的计算巢进行私有化部署,以确保稳定使用。用户无需编写代码即可完成部署,并可通过AppFlow轻松集成到钉钉、企业微信等渠道。具体步骤包括选择适合的机器资源、配置安全组、创建企业微信应用及连接流,最后完成API接收消息配置和测试应用。整个过程简单快捷,帮助用户快速搭建专属AI服务。
2070 7
一键部署开源DeepSeek并集成到企业微信
|
11月前
|
人工智能 自然语言处理 机器人
一键部署开源DeepSeek并集成到钉钉
DeepSeek发布了两款先进AI模型V3和R1,分别适用于对话AI、内容生成及推理任务。由于官方API流量限制,阿里云推出了私有化部署方案,无需编写代码即可完成部署,并通过计算巢AppFlow集成到钉钉等渠道。用户可独享资源,避免服务不可用问题。部署步骤包括选择机器资源、配置安全组、创建应用与连接流,最终发布应用版本,实现稳定高效的AI服务。
917 4
一键部署开源DeepSeek并集成到钉钉
|
运维 Devops jenkins
DevOps实践:持续集成与持续部署在现代软件开发中的作用
【10月更文挑战第42天】在快节奏的软件开发世界里,DevOps已经成为一种提升效率、确保质量和加速交付的重要方法。本文将深入探讨DevOps的核心组成部分—持续集成(CI)和持续部署(CD)—并展示它们如何通过自动化流程优化开发周期。我们将从基础概念讲起,逐步过渡到实际操作,最终通过一个简单代码示例来演示这一过程。文章旨在为读者提供清晰的指导,帮助他们理解和实现CI/CD流程,从而在软件开发领域取得竞争优势。

热门文章

最新文章