Jenkins学习笔记

126 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

持续集成及Jenkins介绍

软件开发生命周期

SDLC - Software Development Life Cycle 需求分析、设计、实现、测试、部署和评估。

敏捷开发

定义 敏捷开发(Agile Development)的核心是迭代开发(Iterative Development)和增量开发(Incremental Development)。

  • 迭代开发 对于大型软件项目,传统开发方式是采用一个大周期进行开发;迭代开发将过程拆分成多个小周期。 迭代开发将一个大任务,分解成多次连续的开发,本质就是逐步改进。开发人员先快速发布一个有效但不完美的简单版本,然后不断迭代。每一次迭代都包含规划、设计、编码、测试、评估五个步骤,不断改进产品,增添新功能。通过频繁的发布,已经跟踪对前一次迭代的反馈,最终完善产品形态。

  • 增量开发 每个软件版本,都会新增一个用户可以感知的完整功能。按照新增功能来划分迭代。

优点

  • 早期交付
  • 降低风险:及时了解市场需求。

虽然敏捷开发将软件开发分成多个迭代,但是也要求,每个迭代都是一个完整的软件开发周期,必须按照软件工程的方法论,进行正规的流程管理。

持续集成

定义 持续集成(Continuous integration,简称 CI )指的是,频繁地将代码集成到主干。 持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。,敏捷开发很大一部分都要归功于持续集成。

步骤

  1. 提交 开发者提交代码到代码仓库。
  2. 构建 构建(build),将源码打包成可运行包。
  3. 测试 测试代码。
  4. 部署 通过测试后将程序包存档,发到服务器。
  5. 回滚 版本出现问题,可以回归到上一个版本的构建结果。

持续集成的组成要素

  • 一个自动构建的过程,从检出代码、编译构建、运行测试、结果纪录、测试统计等都是自动完成的,无需人工干预。
  • 一个代码仓库。
  • 一个持续集成服务器。如 Jenkins。

持续集成的优点

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

Jenkins 介绍

Jenkins 是一款流行的开源持续集成工具,具有自动化构建、测试、部署等功能。

特征

  • 开源的Java语言开发的持续集成工具,支持持续集成,持续部署。
  • 易于安装部署配置,可通过yum安装、docker容器等快速安装部署。可使用web界面配置管理。
  • 消息通知及测试报告。
  • 分布式构建。
  • 丰富的插件支持。
  • 文件识别:跟踪哪次构建生成了哪些包,使用的哪些版本。

参考资料

Jenkins视频教程 - 黑马程序员 - b站