关于持续集成

2017-03-09

关于持续集成

  1. 持续集成(Continuous Integration 简写 CI)

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

  2. 持续交付(Continuous delivery)

    频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。

  3. 持续部署(continuous deployment)

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

    1
    持续交付和持续部署的区别在于,项目流程的部署这一步,持续交付是手动进行的,持续部署是自动的。

知乎有大神这么解释

  • 持续(Continuous):不断的获取反馈,响应反馈。

  • 集成(Integration):编译,测试,打包。

  • 部署(Deployment):应用组件或基本设施的代码或配置变更在产品环境生效称为部署。

  • 发布(Release):具有业务影响的功能变化对最终用户可见成为发布。

  • 交付(Delivery):可以理解为从部署到发布之间的阶段,更多的强调的是一种能力,开发频繁部署的能力,业务随时发布的能录。

流程

根据持续集成的设计,代码从提交到生产,整个过程有以下几步:

1,提交代码:commit

2,测试:代码仓库对 commit 操作配置钩子(hook),只要提交代码或者合并进主干,就会跑自动化测试。这一步骤至少跑单元测试。

3,构建:将源码转换为可以运行的实际代码,比如安装依赖,配置资源(样式表,js,图片)等。

4,第二轮测试:全面测试,单元测试和集成测试都会跑,如果第一轮测试完成的话,这轮测试可以省略。有条件做端对端测试,所有测试以自动化为主,个别可以人工跑。

5,部署:通过了全面测试,代码就是一个可部署版本(artifact)

6,回滚:如果出错,立即回滚。

工具,CI 需要借助这些工具:

持续测试:

  • Sismo - 一个持续的测试服务器库

开发环境:

  • Vagrant - 一个轻便的创建开发环境的工具,开发,测试,部署统一环境。

自动化的构建:

  • Go - 一个简单的PHP构建工具
  • Bob - 一个简单的项目自动化工具
  • Phing - 依据Apache Ant的PHP项目构建系统

自动部署

  • Rocketeer - PHP的快速和简单部署器

  • walle-web - 一个开源的web代码发布管理系统

  • Deployer - 一个部署工具,支持开箱即用的流行框架

持续集成

  • Travis CI - 一个持续集成的平台
  • Jenkins - PHP支持的持续集成平台
  • JoliCi - PHP开发的由Docker支持的持续集成客户端
  • PHPCI - 一个PHP的开源持续集成平台

参考:

阮一峰-持续集成是什么

github:JingwenTian