一、开发模型

1.瀑布开发模型:过程线性不可逆的开发模型

优势:

  1)简单易懂
  2)当前阶段完成后只需要关注后续阶段
  3)为项目提供了按阶段划分的检查节点

劣势:

  1)各个阶段的划分完全固定,阶段之间产生大量文档,增加工作量
  2)由于是线性开发模型,用户只有到开发末期才能见到开发成果,从而增加了开发风险。
  3)瀑布模型的突出缺点是不能适应用户需求的变化。

二、敏捷开发模型

1.概念

  1)迭代开发:将开发过程拆分成多个小周期,即一次“大开发”变成多次小开发。
  2)增量开发:一个开发周期后交付给用户一个可用产品,按照新增功能划分迭代。

2.优点

  1)早期交付:降低开发风险成本,减轻资金压力。
  2)降低风险:及时了解市场需求,降低产品不适用的风险。

三、持续集成

持续集成的目的是让产品可以快速迭代,同时还能保持高质量。

1.Jenkins的特征

  1)开源:Jenkins是一款基于Java语言的开发持续集成工具,支持持续集成,持续部署。
  2)易于安装部署配置:可通过yum安装,或下载war包通过docker容器等快速实现安装部署,方便web界面配置管理。
  3)消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过E-mail通知,生成JUnit/TestNG测试报告。
  4)分布式构建:支持Jenkins能够让多台计算机一起构建/测试
  5)文件识别:Jenkins能够跟踪那次构建生成哪些Jar,哪次构建使用哪个版本的Jar等。
  6)丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

2.持续集成的组成要素

  1)一个自动构建过程:检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预。
  2)一个代码储存库:即需要版本控制器来保证代码的可维护性,同时作为构建过程的素材库,一般使用SVN或Git
  3)一个持续集成服务器:Jenkins就是一个配置简单和使用方便的持续集成服务器。

3.持续集成的好处

  1)降低风险:由于持续集成不断去构建、编译和测试,可以很早期发现问题,所以修复的代价就少。
  2)减少重复性工作:自动合并代码,自动化构建,编译,测试节省了大量重复工作。
  3)持续检查:对系统健康持续检查。减少发布风险和其带来的问题
  4)持续部署:持续提供可部署单元包,
  5)持续交付:持续交付可使用版本。

4.持续集成流程

  1)提交
    流程的第一步,是开发者向代码仓库提交代码。所有的步骤始于本地代码的一次提交。
  2)测试(第一轮)
    代码仓库对commit操作配置了钩子,只要提交代码或者合并进主干就会自动进行测试。
  3)构建
    通过第一轮测试,代码就可以合并进主干,就算可以交付了。
    交付后,就先进行构建,再进行第二轮测试。构建指的是将源码转化为实际代码,
    比如安装依赖,配置各种资源(样式表、js脚本、图片)
  4)测试(第二轮)
    构建完成,就进行第二轮测试。如果第一轮已经涵盖了所有测试内容,第二轮可以省略,这时构建步骤也要移到第一轮测试前面。
  5)部署
    经过第二轮测试,当前代码就是一个可部署的版本,将这个版本的所有文件打包发到生产服务器上。就是部署
  6)回滚
    一旦当前版本发生问题就要回滚到上一个版本的构建结果。最简单的方法就是修改符号链接,指向上一个版本的目录。

5.持续集成流程说明

  1)开发人员每天进行代码提交,提交到Git仓库
  2)Jenkins使用Git工具到Git仓库拉取代码到集成服务器,配合JDK、Maven等软件完成代码编译、测试与省察。测试,打包等工作,
        在这个过程中每一个步骤出错都要重新执行整个流程
  3)Jenkins将生成的jar或war包分发到测试环境或生产环境进行部署,测试人员或用户就能通过服务器访问应用。

Jenkins——为什么使用持续集成?的更多相关文章

  1. 基于 Jenkins 快速搭建持续集成环境

      什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...

  2. jenkins + Git 搭建持续集成环境

    持续集成通过自动化构建.自动化测试以及自动化部署加上较高的集成频率保证了开发系统中的问题能迅速被发现和修复,降低了集成失败的风险,使得系统在开发中始终保持在一个稳定健康的集成状态.jenkins是目前 ...

  3. Jenkins+Gitlab搭建持续集成(CI)环境

    利用Jenkins+Gitlab搭建持续集成(CI)环境 Permalink: 2013-09-08 22:04:00 by hyhx2008in intern tags: jenkins gitla ...

  4. 基于 Jenkins 快速搭建持续集成环境--转

    源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...

  5. Jenkins 快速搭建持续集成环境

    持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域 ...

  6. Jenkins快速搭建持续集成

    基于Jenkins快速搭建持续集成环境 Jenkins+tortoisesvn+MSBuild做到持续集成 附Jenkins的使用:http://www.infoq.com/cn/articles/M ...

  7. 构建基于Jenkins + Github的持续集成环境

    搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路.持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集 ...

  8. Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(三):搭建jenkins集群环境

    写在前面 大家可以看到本文的配图,左边是jenkins单机环境,右边是jenkins集群.个中区别,不言而喻,形象生动. 前面我分别介绍了.net core 程序的多种部署方式(无绝对孰优孰劣): 1 ...

  9. Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(二):部署

    前面又是废话 我之前写过: Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署 Asp.Net Core 程序部署到Linux(centos)生产环境(二):doc ...

  10. Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(一):Jenkins安装

    2019/1/31更新,经过我一段时间的使用 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用d ...

随机推荐

  1. java继承成员变量特点

    1 /* 2 * 在子父类中,成员的特点体现. 3 * 1,成员变量. 4 * 2,成员函数. 5 * 3,构造函数. 6 */ 7 8 //1, 成员变量. 9 /* 10 * 当本类的成员和局部变 ...

  2. sed 模式空间 保持空间

    sed之所以能以行为单位的编辑或修改文本,其原因在于它使用了两个空间:一个是活动的"模式空间(pattern space)",另一个是起辅助作用的"保持空间(hold s ...

  3. Kubernetes-Secret

    1. 简介 Secret 是一种包含少量敏感信息例如密码.令牌或密钥的对象. 这样的信息可能会被放在 Pod 规约中或者镜像中. 使用 Secret 意味着你不需要在应用程序代码中包含机密数据. 由于 ...

  4. windows系统配置Nginx使用SSL证书实现Https反向代理

    Nginx反向代理服务,可以代理接收请求,并把请求转发到设置好的其他服务器上. 例如,Nginx服务器为 100.101.102.103,A服务为 100.101.102.104 ,通过Nginx配置 ...

  5. 使用ajax登录验证,第一次点击登录按钮无反应,第二次点击才能正常运行。

    问题描述: 使用ajax进行登录验证时,第一次点击登录按钮无反应,第二次点击才能进去. 解决方法: 原来的代码 <form action="" method="po ...

  6. 微前端框架 之 qiankun 从入门到源码分析

    封面 简介 从 single-spa 的缺陷讲起 -> qiankun 是如何从框架层面解决 single-spa 存在的问题 -> qiankun 源码解读,带你全方位刨析 qianku ...

  7. NumPy 数组学习手册·翻译完成

    原文:Learning NumPy Array 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN 面试求职交流群 ...

  8. SimpleDateFormat简介及替代方案

    简介 SimpleDateFormat是一个时间格式化工具,可以将字符串格式化时间Date类型,也可以将Date类型格式化为字符串String类型,但其线程不安全. 常用方法 public final ...

  9. Jackson 的 基本用法

    Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架.Jackson 社 区相对比较活跃,更新速度也比较快, 从 Github 中的统计来看,Jackson ...

  10. python folium 库学习

    一.简介 folium是js上著名的地理信息可视化库leaflet.js为Python提供的接口,通过它,我们可以通过在Python端编写代码操纵数据,来调用leaflet的相关功能,基于内建的osm ...