持续集成
持续集成(Continuous integration,简称CI)是软件的开发和发布标准流程中最重要的部分。
简单来说,就是持续不断地(一天多次)将代码合并(集成)到主干源码仓库,让产品可以快速迭代,同时保持高质量。
代码每次集成到主干之前,必须通过自动化测试,以便快速发现和定位错误。
持续集成并不能消除Bug,而是让它们非常容易发现和改正。
基本流程
- 签出代码:从源码管理系统里签出或者克隆最新的代码到本地开发环境
- 提交(commit):基于主干分支创建一个新的功能分支,并在此分支编写代码,并向仓库提交代码
- 测试(第1轮):代码仓库对commit操作配置了钩子(hook), 每一次提交代码都会触发自动化测试:单元测试(针对函数或模块的测试,必选)、功能测试(集成测试)、端对端测试等
- 构建(build):通过测试(第1轮)后,将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源等
- 测试(第2轮):以自动化为主的全面测试,包括单元测试和集成测试,必要时做端对端测试,确保新版本的每一个更新点都必须测试到
- 合并:通过测试(第2轮)后,将代码更新集成到主干
- 回滚:如果当前版本发生问题,就回滚到上一个版本的构建结果
优点
- 自动化验证代码变更的过程
- 在软件开发的早期发现缺陷和与其他代码和组件的集成问题
- 自动化测试代码,提升代码质量的提升
- 缩短开发复杂软件的市场交付时间
- 减少大块内容合并到主干分支的情况,避免代码合并冲突和无法预料的行为
难点
迁移遗留代码到现有CI系统,人力物力的耗费通常
在文化和组织上如果没有采用敏捷原则或DevOps的工作方式,那么很可能没有持续不断的提交,那么CI存在意义不大
随着业务增长和技术的更替,CI系统也必须随之改动,往往会导致阶段性的不稳定和人力物力的耗费
DevOps - 持续集成(Continuous Integration)
原文:https://www.cnblogs.com/anliven/p/10989521.html