持续集成详解
持续集成
1.什么是持续集成
针对系统的开发和发布,形成的一套标准流程。
持续集成指的是,频繁地(一天多次)将代码集成到主干
2.持续集成的流程
1)开发者向代码仓库提交代码
本地代码commit到代码仓库
2)代码仓库对提交的代码进行测试
代码仓库对commit操作配置了钩子(hook),只要提交代码或者合并进主干,就会跑自动化测试。
测试的种类如下:
单元测试:测试函数或模块功能
集成测试:针对整个产品的某个功能的测试,又称功能测试
端对端测试:从用户界面直达数据库的全链路测试
3)持续交付
通过上步测试后,代码就可以合并进主干了,此时称作可交付。
4)构建
构建指的是,交付后的源代码转为运行的实际代码,比如安装依赖,配置各种资源(样式表,js脚本,图片)等等。
5)测试
构建完毕后,会进入测试。以自动化测试为主,无法自动化的测试用例,需要人工跑。
6)部署到生产服务器
通过上步测试后,当前代码就是一个可以直接部署的版本。将这个版本的所有文件打包存档,发到生产服务器上。
生产服务器解包文件,再将运行路径符号链接指向文件目录,然后重新启动应用。
部署工具有Ansible,Chef,Puppet等。
7)回滚
若当前版本有问题,需要回滚上一个版本的构建结果。最简单的做法就是修改运行路径符号链接,指向上次构建的目录。
3.持续集成的优点
1)快速发现发错
每完成一点更新,就集成到主干,可快速发现和定位错误
2)防止分支大幅偏离主干
主干不断更新,会导致分支集成难度变大或难以集成。
4.持续集成的目的
让产品可以快速迭代,同时还能保持高质量。