0%

前端工程化-CI/CD

概念:

1.CI(Continuous integration,持续集成)

频繁地(一天多次)将代码集成到主干

2.CD(Continous delivery**,持续交付)**

持续集成的下一步,指的是,频繁将软件的新版本,交付给质量团队或者用户,以供评审,如评审通过,代码进入生产阶段,手动部署

3.CD(Continous deployment,持续部署)

持续交付的下一步,指的是,代码通过评审后,自动部署到生产环境

意义:

CI(持续集成)

(1)快速发现错误,每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易

(2)防止分支大幅偏离主干,如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成

持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量,它的核心措施是,代码集成到主干之前,必须通过自动化测试,只要有一个测试用例失败,就不能集成

CD(持续交付)

保证不管怎么更新,软件是随时可以交付的

CD(持续部署)

保证代码在任何时刻都是可部署,可以进入生产阶段

流程

提交

开发者提交代码

测试(第一轮)

代码仓库commit操作配置钩子,只要提交代码合并进主干,就会跑自动化测试

三种测试:

单元测试:针对函数或模块的测试

集成测试:针对整体产品的某个功能的测试,又称功能测试

端对端测试:从用户界面直达数据库的全链路测试

构建:

测试通过,代码即可进入主干,就算可以交付

交付后,就先进行构建,再进入第二轮测试

所谓构建,指的就是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式,JS脚本,图片)等

常用的构建工具:

·Jenkins

·Travis

·Codeship

·Strider

测试(第二轮)

全面测试,单元测试和集成测试都会跑,有条件也要做端对端测试,所有测试以自动化为主,少数无法自动化的测试用例,人工跑

部署

通过第二轮测试,当前代码就是一个可以直接部署的版本,将这个版本的所有文件打包存档,发到生产服务器,生产服务器将打包文件解包成本地的一个目录,再将允许路径的符号链接指向这个目录,然后重新启动应用

回滚

一旦当前版本发送问题,就要回滚到上一个版本的构建结果,最简单的做法就是修改符号链接,指向上一个版本目录