持续集成的概念及流程

一、持续集成的概念

互联网软件的开发和发布,形成了一套标准流程,其中最重要的组成部分就是持续集成(Continuous Integration)。原先手工部署包含拉取代码、编译打包、构建镜像、发布镜像、运行镜像,通过持续集成将这些流程自动化。

持续集成指的是频繁的将代码提交到主干,优点有:1.能快速发现错误;2.防止分支大幅度偏离主干。持续集成强调了开发人员提交新代码之后立刻进行构建、单元测试,根据测试结果可以确定新代码是否能和原有代码正确集成在一起,与持续集成相关的,还有两个概念:持续交付和持续部署。

持续交付(Continuous delivery)指的是频繁的将软件的新版本交付给质量团队和用户,以供评审,如果评审通过,代码就进入生产阶段。持续交付可以看做持续集成的下一阶段,他强调的是,软件随时是可交付的。

持续交付是在持续集成的基础上,将持续集成后的代码部署到更贴近真实环境的生产环境中。在持续交付中,代码能自动部署到测试环境、类生产环境中,最后再手动部署到生产环境中。

持续部署(Continuous deployment)是持续交付的下一步,指的是代码通过评审后,自动部署到生产环境中。持续部署的目标是代码在任何时刻都是可部署的,可以进入生产环境。持续部署的前提是能够自动化完成测试、构建、部署等步骤。在持续部署中,能将代码自动部署到测试环境、类生产环境以及生产环境中。

二、持续集成的操作流程

根据持续集成的设计,代码从提交到生产,包含以下流程:

提交

第一步,开发者向代码仓库提交代码,所有后续的步骤都始于本地代码的一次提交(commit)。

测试(第一轮)

代码仓库对commit操作设置了钩子(hook),只要提交代码或者合并进主干,就会启动自动化测试。

第一轮至少跑完单元测试。

构建

通过第一轮测试,代码合并进主干,就可以交付了。

交付后,就进行构建(build),再进入第二轮测试,构建指的是将源码转换为可以运行的实际代码,比如安装依赖、配置各种资源(样式表、js脚本、图片等)等。

常用的构建工具有:Jenkins、Travis、Codeship等。

测试(第二轮)

构建完成后,就进行第二轮测试,第二轮是全面测试,包含单元测试、集成测试,以自动化测试为主,新版本的每一个更新点都要测试到。

部署

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

回滚

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

本文是基于原作者文章的总结,原文地址:www.funtl.com

猜你喜欢

转载自www.cnblogs.com/DP-CPzhu/p/12620771.html