前言
本章主要简单讲述【开发模型】及【持续集成和交付】基本概念
- 目前市面上的公司一般都是用Jenkins进行持续集成操作
一、开发模型简要介绍
首先简单提及一下【瀑布模型】和【敏捷开发】模型
-
瀑布模型: 简单来说,就和工厂流水线一样,一个环节完了后进入下一个环节(即从设计–>开发–>测试–>开发改bug–>预发布–>生产等),各环节人员管理自己的事就行,在开发过程中客户只能通过文档来了解产品
所以它有个最大的弊端就是:下游工作的开展严重依赖于上游的交付完成情况,造成了严重的人力资源浪费.
-
敏捷开发模型: 即以客户需求为导向,快速迭代功能型开发(和客户打交道型)
在软件项目构建初期会切分成很多独立小项目来进行开发,所有的人都要同时的工作(不再依赖于上游),最大的特色是客户会参与到软件开发的过程中,能够及时响应客户的需求
像这样的开发模式,在政府项目中比较多见,它是以客户的需求为导向来进行快速迭代开发,最主要的是多于客户沟通,多了解客户需要什么。每次发布的版本多以小版本为主。
为什么要首先提及开发模型呢?
因为目前大部分公司其实实行的都是一个 【敏捷开发】模式,那针对敏捷开发这种模型,通常版本都是以小版本发布为主,需要我们短时间进行一个项目的快速迭代,那针对这种快速迭代的方式,持续集成和持续交付就不可避免成为其中重要的一环,可以加速项目的交付,加快开发和测试这边的一个效率
二、持续集成和持续交付简要介绍
持续集成(Continuous integration): 即频繁地(一天多次)将代码集成到主干。 就是让产品可以快速迭代,同时还能保持高质量。 它主要是在开发阶段执行,它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
- 举个例子:一般我们进行UI/API自动化用例部署后,只要开发那边Git提交了代码,就会自动触发我们的用例执行,然后发送测试报告,从某种意义上来说,其实就是进行冒烟测试,只是这一部直接自动集成了
那持续集成有什么优点呢?
(1)可以快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
不像瀑布模型一样到最后产品都完成开发时,才提交测试,那到时候遗留的bug就会很多,会花费很多时间成本(2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
一般在开发阶段,不同的开发不同的需求都会拉不同的分支,等这个分支的代码测试全部验证通过后才会合到master分支,持续集成
持续交付(Continuous delivery): 频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续交付可以看作持续集成的下一步。可以理解为在 【预发布阶段】,它强调的是,不管怎么更新,软件是随时随地可以交付的。
持续部署 (continuous deployment): 是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。
持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。
持续部署的前提是能自动化完成测试、构建、部署等步骤。