本文已参与「新人创作礼」活动,一起开启掘金创作之路。
持续集成及Jenkins介绍
软件开发生命周期
SDLC - Software Development Life Cycle
需求分析、设计、实现、测试、部署和评估。
敏捷开发
定义 敏捷开发(Agile Development)的核心是迭代开发(Iterative Development)和增量开发(Incremental Development)。
-
迭代开发 对于大型软件项目,传统开发方式是采用一个大周期进行开发;迭代开发将过程拆分成多个小周期。 迭代开发将一个大任务,分解成多次连续的开发,本质就是逐步改进。开发人员先快速发布一个有效但不完美的简单版本,然后不断迭代。每一次迭代都包含规划、设计、编码、测试、评估五个步骤,不断改进产品,增添新功能。通过频繁的发布,已经跟踪对前一次迭代的反馈,最终完善产品形态。
-
增量开发 每个软件版本,都会新增一个用户可以感知的完整功能。按照新增功能来划分迭代。
优点
- 早期交付
- 降低风险:及时了解市场需求。
虽然敏捷开发将软件开发分成多个迭代,但是也要求,每个迭代都是一个完整的软件开发周期,必须按照软件工程的方法论,进行正规的流程管理。
持续集成
定义 持续集成(Continuous integration,简称 CI )指的是,频繁地将代码集成到主干。 持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。,敏捷开发很大一部分都要归功于持续集成。
步骤
- 提交 开发者提交代码到代码仓库。
- 构建 构建(build),将源码打包成可运行包。
- 测试 测试代码。
- 部署 通过测试后将程序包存档,发到服务器。
- 回滚 版本出现问题,可以回归到上一个版本的构建结果。
持续集成的组成要素
- 一个自动构建的过程,从检出代码、编译构建、运行测试、结果纪录、测试统计等都是自动完成的,无需人工干预。
- 一个代码仓库。
- 一个持续集成服务器。如 Jenkins。
持续集成的优点
- 降低风险,由于持续集成不断去构建、编译和测试,可以早期发现问题。
- 对系统健康持续检查,减少发布风险带来的问题。
- 减少重复性工作。
- 持续部署,可提供部署单元包。
- 持续交付可使用的版本。
Jenkins 介绍
Jenkins 是一款流行的开源持续集成工具,具有自动化构建、测试、部署等功能。
特征
- 开源的Java语言开发的持续集成工具,支持持续集成,持续部署。
- 易于安装部署配置,可通过yum安装、docker容器等快速安装部署。可使用web界面配置管理。
- 消息通知及测试报告。
- 分布式构建。
- 丰富的插件支持。
- 文件识别:跟踪哪次构建生成了哪些包,使用的哪些版本。