概念:
1.CI(Continuous integration,持续集成)
频繁地(一天多次)将代码集成到主干
2.CD(Continous delivery**,持续交付)**
持续集成的下一步,指的是,频繁将软件的新版本,交付给质量团队或者用户,以供评审,如评审通过,代码进入生产阶段,手动部署
3.CD(Continous deployment,持续部署)
持续交付的下一步,指的是,代码通过评审后,自动部署到生产环境
意义:
CI(持续集成)
(1)快速发现错误,每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易
(2)防止分支大幅偏离主干,如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量,它的核心措施是,代码集成到主干之前,必须通过自动化测试,只要有一个测试用例失败,就不能集成
CD(持续交付)
保证不管怎么更新,软件是随时可以交付的
CD(持续部署)
保证代码在任何时刻都是可部署,可以进入生产阶段
流程
提交
开发者提交代码
测试(第一轮)
代码仓库commit操作配置钩子,只要提交代码合并进主干,就会跑自动化测试
三种测试:
单元测试:针对函数或模块的测试
集成测试:针对整体产品的某个功能的测试,又称功能测试
端对端测试:从用户界面直达数据库的全链路测试
构建:
测试通过,代码即可进入主干,就算可以交付
交付后,就先进行构建,再进入第二轮测试
所谓构建,指的就是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式,JS脚本,图片)等
常用的构建工具:
测试(第二轮)
全面测试,单元测试和集成测试都会跑,有条件也要做端对端测试,所有测试以自动化为主,少数无法自动化的测试用例,人工跑
部署
通过第二轮测试,当前代码就是一个可以直接部署的版本,将这个版本的所有文件打包存档,发到生产服务器,生产服务器将打包文件解包成本地的一个目录,再将允许路径的符号链接指向这个目录,然后重新启动应用
回滚
一旦当前版本发送问题,就要回滚到上一个版本的构建结果,最简单的做法就是修改符号链接,指向上一个版本目录