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

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

什么是集成?


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

 

实际栗子

  • 现在有一个电商平台需要开发
  • 由于电商平台模块众多,需要不同的开发人员开发不同的模块【本地开发】
  • 最后将所有人开发好的代码集成到一个系统中【提交代码到远程仓库】
  • 集成完成后需要对其进行部署上线
  • 随着时间的推移,该系统无论是 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 自动化
  • 开发人员提交代码到编译、测试、部署的全流程都不需要人工干预,完全自动化执行

 

持续部署的优势

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

 

持续部署的不足

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




相关文章
|
4天前
|
运维 Cloud Native Devops
云原生时代的DevOps实践:自动化、持续集成与持续部署
【9月更文挑战第3天】未来,随着人工智能、大数据等技术的不断融入,DevOps实践将更加智能化和自动化。我们将看到更多创新的技术和工具涌现出来,为软件开发和运维带来更多便利和效益。同时,跨团队协作和集成也将得到进一步加强,推动软件开发向更加高效、可靠和灵活的方向发展。
|
3天前
|
Devops jenkins Shell
DevOps实践:持续集成与持续部署(CI/CD)的探索之旅
【9月更文挑战第3天】在软件开发的世界里,DevOps已经成为了提升效率、加速产品迭代的关键。本文将深入浅出地探讨DevOps文化中的核心实践——持续集成(Continuous Integration,CI)和持续部署(Continuous Deployment,CD),并展示如何通过实际操作来优化开发流程。我们将一起踏上这段旅程,解锁自动化的魅力,让代码更流畅地转化为价值。
|
7天前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
23 1
|
8天前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
【8月更文挑战第30天】在Jenkins服务器中,git和Gitee是常用的代码拉取终端。Git作为分布式版本控制系统,具备出色的灵活性和可扩展性;而Gitee则在国内网络环境下表现更佳,适合团队协作。Git配置包括安装、设置用户信息及生成SSH密钥等步骤;Gitee配置也类似,需注册账号、创建仓库、配置基本信息并设置远程仓库地址。开发人员提交代码后,可通过Webhook、定时轮询或事件监听等方式触发Jenkins动作,确保持续集成和部署高效运行。正确配置这些触发机制并通过测试验证其有效性至关重要。
24 2
|
8天前
|
jenkins 测试技术 持续交付
利用 Jenkins 实现持续集成与持续部署(一)
【8月更文挑战第30天】Jenkins在软件开发中至关重要,其持续集成与部署功能极大提升了开发效率、保障了软件质量、增强了团队协作并加速了产品上市。实现这些功能前需搭建基础环境:配置合适的JDK版本、设置Git版本控制并准备好目标服务器。在Jenkins中创建新任务,详细配置源码管理、构建触发器(如定时构建或监听代码变更)、构建及部署步骤(如使用Maven编译打包、通过SSH插件或Docker部署)。这些关键配置确保了自动化流程的顺畅运行。
28 1
|
9天前
|
Kubernetes jenkins 持续交付
Kubernetes CI/CD 集成:持续交付的最佳实践
【8月更文第29天】随着微服务架构和容器化的普及,Kubernetes 成为了运行容器化应用的事实标准。为了确保应用能够快速迭代并稳定发布,持续集成/持续部署(CI/CD)流程变得至关重要。本文将介绍如何将 Kubernetes 集成到 CI/CD 流程中,并提供一些最佳实践。
19 1
|
4天前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
安装Git、配置用户信息、生成SSH密钥以及在Gitee上创建项目仓库等。
24 0
|
7天前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
23 0
|
7天前
|
开发者 持续交付 Android开发
Xamarin开发者的秘密武器:如何通过持续集成与持续部署(CI/CD)实现高效、高质量的软件交付
【8月更文挑战第31天】在当今追求高效、高质量软件交付的时代,Xamarin开发者需像大厨般迅速烹制数字化佳肴,而持续集成(CI)与持续部署(CD)则是关键工具。CI要求开发者频繁将代码集成到共享仓库,利用自动化工具如Azure Pipelines或Jenkins自动编译、测试代码,确保质量。CD在此基础上进一步实现自动化部署,简化从开发到生产的全过程。借助如Visual Studio App Center这样的工具,Xamarin项目得以快速构建、测试并部署至Android和iOS平台,显著提升开发效率和代码质量,助力团队乘风破浪,驶向成功的彼岸。
16 0
|
7天前
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
14 0
下一篇
DDNS