持续集成01 入门

持续集成入门学习笔记。

持续集成的概念

Continuous Intergration(CI),指的是开发代码频繁地合并进主干,式中保持可发布状态的这个过程。

优点:

  • 快速发现错误
  • 防止分支大幅度偏离主干
  • 让产品可以快速迭代,同时还能保持高质量

CI的核心措施:代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成

与持续集成相关的还有两个概念,持续交付和持续部署(CD)

持续交付和持续部署

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

持续部署是持续交付的下一步,指的是代码通过评审后,自动部署到生产环境。它的前提是能自动化完成测试、构建、部署都步骤。

持续集成的流程

(1)提交:开发者向代码仓库提交代码(commit)。

(2)第一轮测试:代码仓库对commit操作配置了钩子(hook),只要提交代码或者合并主干就会进行自动化测试。测试种类包括单元测试(必须)、集成测试、端对端测试。这一轮测试可以省略,因为在构建完成后会有第二轮测试。

(3)构建:通过测试后,代码合并进主干,进行构建(构建包括安装依赖、配置资源等),常用的构建工具有Jenkins和Travis。

(4)第二轮测试:构建完成后要进行第二轮测试,第二轮测试是前面测试,单元测试和集成测试都要进行,有条件也要做段对端测试,所有测试以自动化测试为主,少数无法自动化测试的用例需要人工进行。新版本的每个更新点要必须要测到。

(5)部署:第二轮测试通过后,将这个版本的所有文件打包存档,发到生产网服务器,生产服务器将打包文件解压为本地目录,再将运行路径的符号链接(symlink)指向这个目录,然后重新启动应用。

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

参考