前端工程化 — CI/CD

2019-08-26  本文已影响0人  南慕瑶

一、概念

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

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

2.CD(Continuous delivery,持续交付):

持续集成的下一步。指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。

如果评审通过,代码就进入生产阶段。

3.CD(continuous deployment,持续部署):

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

【注】

持续交付与持续部署的区别:

持续交付:质量团队或用户评审通过后,手动部署。

持续部署:质量团队或用户评审通过后,自动部署。

二、意义

1.CI(持续集成):

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

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

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

2.CD(持续交付):

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

3.CD(持续部署):

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

三、流程

1.提交

开发者提交代码。

2.测试(第一轮)

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

三种测试:

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

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

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

3.构建

测试通过,代码即可合并入主干。就算可以交付了。

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

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

常用的构建工具如下:

·Jenkins

·Travis

·Codeship

·Strider

4.测试(第二轮)

全面测试。单元测试和集成测试都会跑,有条件的话,也要做端对端测试。

所有测试以自动化为主,少数无法自动化的测试用例,就要人工跑。

5.部署

通过了第二轮测试,当前代码就是一个可以直接部署的版本(artifact)。

将这个版本的所有文件打包( tar filename.tar *)存档,发到生产服务器。

生产服务器将打包文件,解包成本地的一个目录,再将运行路径的符号链接(symlink)指向这个目录,然后重新启动应用。这方面的部署工具有AnsibleChefPuppet等。

6.回滚

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

#整理自:http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html

上一篇下一篇

猜你喜欢

热点阅读