项目开发模式

瀑布模型(Waterfall Model)

瀑布模型是一种顺序型开发模式,各个阶段按照顺序依次进行,一个阶段完成后才能进入下一个阶段。这种模式适用于需求稳定、开发周期长的项目

63895cd4-7ae0-4d3d-8395-ed71e268b6fb

敏捷开发(Agile Development)

敏捷开发是一种迭代型开发模式,强调团队合作、用户参与和快速响应变化。敏捷开发方法包括Scrum、XP、Lean等,适用于需求不稳定、开发周期较短的项目

cfb62b6b-2d0b-47c7-b547-7b8d80dea1c7

DevOps

DevOps是一种将开发和运维流程整合在一起的开发模式,强调自动化和持续交付。DevOps适用于需要频繁部署和更新的项目

2a451fda-d3d1-4d27-9ab3-e71ffb0e4a9a

三者对比

ce1b4713-f9de-4b3b-b725-7eb045d432a9

持续集成

持续集成 (Continuous integration,简称 CI) 指的是,频繁地(一天多次)将代码集成到主干

它的好处主要有两个:

  1. 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易
  2. 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成

持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,**代码集成到主干之前,必须通过自动化测试**。只要有一个测试用例失败,就不能集成。

Martin Fowler 说过,”持续集成并不能消除 Bug,而是让它们非常容易发现和改正。”

与持续集成相关的,还有两个概念,分别是持续交付持续部署

持续交付

持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段

持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的

持续部署

持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,**自动部署**到生产环境

持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段

持续部署的前提是能自动化完成测试、构建、部署等步骤

CI/CD流程

为了保证团队开发人员提交代码的质量,减轻软件发布时的压力;持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;

whiteboard_exported_image

实现流程:

  1. 开发人员持续将功能代码集成到公共功能集成分支,如: develop
  2. 当功能积攒到一定节点,需要进行线上项目升级,需要基于持续集成软件进行一键发布;
  3. 持续集成工具先对develop | master分支代码进行拉取更新,然后对最新功能代码进行清理、编译、测试、打包、打镜像、部署等动作;
  4. 如果构建失败,则发送邮件提醒代码提交人员或管理员;

要实现上面流程,咱们需要了解一款支持持续集成的软件:Jenkins