Jenkins部署及使用

1.基础

1.软件开发生命周期

  • 1.SDLC(Software Development Life Cycle):软件开发生命周期,其是计划,开发、测试和部署过程的集合
    在这里插入图片描述
  • 1.需求分析
  • 2.项目设计
  • 3.项目实现
  • 4.测试
  • 5.运维

2.软件开发模型

1.瀑布模型(淘汰)

  • 1.高度化的结构流程,只能向一个方向上流动,按部就班,不能回退
  • 2.优点
    • 1.理解简单,方便适用
    • 2.当前一阶段完成后,只需要关注后续阶段
    • 3.为项目提供了按阶段划分的检查节点
  • 3.缺点
    • 1.各个阶段的划分完全固定,阶段之间产生大量的文档,工作量大
    • 2.由于瀑布模型是线性的,只有等到过程的末期才能获得开发成果,从而增加了开发风险
    • 3.突出缺点是不适应用户需求的变化
      在这里插入图片描述

2.敏捷开发模型(推荐)

  • 1.敏捷开发(Agile Development)核心
    • 1.迭代开发(Iterative Development):将开发过程拆分成多个小周期,每次小开发都是同样的流程,同时每次迭代都是一个完整的软件开发周期
      在这里插入图片描述
    • 2.增量开发(Incremental Development):每一个小周期都产生对应的一个版本,该版本会增加新的功能
  • 2.优点
    • 1.可以早期交付,从而大大降低成本
    • 2.可以了解市场需求,降低产品不适用的风险

3.持续集成(CI)

  • 1.持续集成(Continuous integration,CI):持续将代码集成到代码仓库的主干,代码集成到主干之前,必须通过自动化测试,只要有一个测试用例失败就不能集成,持续集成快速迭代基础
  • 2.优点
    • 1.产品可以快速迭代,同时还能保持高质量
    • 2.通过持续集成可快速的从一个功能过渡到另一个功能

1.持续集成的流程

在这里插入图片描述

  • 1.提交(commit):开发者向代码仓库提交代码,后面的步骤都始于本地代码的一次提交
  • 2.测试(第一轮):代码仓库对commit操作配置了钩子(hook),只要提交代码或合并进主干,就会执行自动化测试
  • 3.构建(build):将源码转换为可运行的实际代码,通过第一轮测试,代码可以合并进主干,然后进行构建,再进入第二轮测试
  • 4.测试(第二轮):构建完成,就进行第二轮测试,如果第一轮已经涵盖了所有测试内容,第二轮可省略
  • 5.打包部署:如果通过测试,则当前代码是一个可部署的版本(artifact),将这个版本的所有文件打包存档,发到生产服务器部署启动
  • 6.回滚:一旦当前版本发生问题,需要回滚到上一个版本的构建结果

2.持续集成的组成要素

  • 1.自动构建过程:从检出代码,编译构建,运行测试,结果记录,测试统计等都是自动完成,无需人工干预
  • 2.代码存储库:需要版本控制软件来保障代码的可维护性,一般使用svngit
  • 3.持续集成(CI)服务器:推荐Jenkins作为持续集成服务器
    在这里插入图片描述

3.持续集成的好处

  • 1.降低风险,由于持续集成不断去构建,编译和测试,可以很早期发现问题,所以修复的代价小
  • 2.对系统健康持续检查,减少发布风险带来的问题
  • 3.减少重复性工作
  • 4.持续部署,提供可部署单元包
  • 5.持续交付可供使用的版本

4.持续部署(CD)

  • 1.持续交付(Continuous Delivery,CD)/持续部署(Continuous Deployment,CD)
    • 1.持续集成CI完成构建、单元测试和集成测试等自动化流程后,持续交付CD可以自动把已验证的代码发布到企业的代码存储库
  • 2.持续交付CD目的:建立一个可随时将开发环境的功能部署到生产环境的代码库
    • 1.持续交付CD的过程中,每个步骤都涉及到了测试自动化和代码发布自动化,流程结束后运维团队可以快速、轻松地将应用部署到生产环境中
    • 2.对于一个完整、成熟的CI/CD管道来说,最后的阶段是持续部署,其作为持续交付的延伸,持续部署可以自动将应用发布到生产环境
    • 3.CD指的是持续交付/持续部署,这些相关概念有时会交叉使用,两者都事关管道后续阶段的自动化,但有时也会单独使用,用于说明自动化程度
    • 4.持续交付(第一种CD)通常是指开发人员对应用的更改会自动进行错误测试并上传到存储库,然后由运维团队将其部署到实时生产环境中,因此持续交付的目的就是确保尽可能减少部署新代码时所需的工作量
    • 5.持续部署(另一种CD)指的是自动将开发人员的更改从存储库发布到生产环境,以供客户使用,主要为了解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题

5.DevOps

  • 1.持续交付是持续集成的延伸,而持续部署又是持续交付的延伸,通常将不同环境发布和测试过程称为部署流水线,并把部署到生产环境的过程实现自动化
  • 2.DevOpsCI/CD思想的延伸,CI/CDDevOps的基础核心,如果没有CI/CD自动化的工具和流程DevOps是没有意义的

2.Jenkins

1.定义

  • 1.Jenkins是一款开源CI/CD软件,用于各种自动化任务,包括构建、测试和部署软件

2.特点

  • 1.基于Java语言开发的开源的持续集成工具,支持持续集成,持续部署
  • 2.易安装部署配置:可通过yum安装或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理
  • 3.消息通知及测试报告:集成RSS/E-mail通过RSS/e-mail发布构建结果,并生成JUnit/TestNG测试报告
  • 4.分布式构建:Jenkins支持让多台计算机一起构建/测试
  • 5.文件识别,Jenkins能够跟踪构建生成的jar以及其使用的版本等信息
  • 6.丰富的插件支持:支持扩展插件,可开发适合使用的工具(gitsvnmavendocker等)

3.执行流程

在这里插入图片描述

  • 1.开发人员进行代码提交,提交到Git仓库
  • 2.使用Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDKMaven等软件完成代码编译,代码测试与审查,测试,打包等工作(注意:这个过程中每一步出错,都需再重新执行一次整个流程)
  • 3.最后Jenkins把生成的jarwar包分发到测试服务器或者生产服务器
    在这里插入图片描述

4.安装部署完整案例

1.准备工作

在这里插入图片描述

  • 1.准备三台Linux虚拟机(CentOS7
    • 1.一台安装GitLab作为代码仓库
    • 2.一台安装Jenkins、JDK、Git、Maven作为持续集成服务器
    • 3.一台安装Tomcat服务器作为测试服务器
  • 2.参考Linux操作命令中的启动、快照,克隆生成三台ip不同的Linux虚拟机

2.代码仓库

  • 1.参考Linux软件安装中的Linux系统下安装GitLab

3.持续集成服务器

  • 1.参考Linux软件安装中的Linux系统下安装Jenkins
1.插件安装
  • 1.Jenkins本身不提供多功能,可通过插件来完成需要的功能(GitLab代码拉取,Maven构建项目)
  • 2.Jenkins国外官方插件地址下载速度慢,需要修改为国内插件地址
  • 3.步骤:Jenkins->Manage Jenkins -> Manage Plugins -> Available

4.测试服务器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值