关于持续集成
2017-03-09
关于持续集成
持续集成(Continuous Integration 简写 CI)
频繁地(一天多次)将代码集成到主干。
持续交付(Continuous delivery)
频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续部署(continuous deployment)
是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。续部署的前提是能自动化完成测试、构建、部署等步骤。
1
持续交付和持续部署的区别在于,项目流程的部署这一步,持续交付是手动进行的,持续部署是自动的。
知乎有大神这么解释
持续(Continuous):不断的获取反馈,响应反馈。
集成(Integration):编译,测试,打包。
部署(Deployment):应用组件或基本设施的代码或配置变更在产品环境生效称为部署。
发布(Release):具有业务影响的功能变化对最终用户可见成为发布。
交付(Delivery):可以理解为从部署到发布之间的阶段,更多的强调的是一种能力,开发频繁部署的能力,业务随时发布的能录。
流程
根据持续集成的设计,代码从提交到生产,整个过程有以下几步:
1,提交代码:commit
2,测试:代码仓库对 commit 操作配置钩子(hook),只要提交代码或者合并进主干,就会跑自动化测试。这一步骤至少跑单元测试。
3,构建:将源码转换为可以运行的实际代码,比如安装依赖,配置资源(样式表,js,图片)等。
4,第二轮测试:全面测试,单元测试和集成测试都会跑,如果第一轮测试完成的话,这轮测试可以省略。有条件做端对端测试,所有测试以自动化为主,个别可以人工跑。
5,部署:通过了全面测试,代码就是一个可部署版本(artifact)
6,回滚:如果出错,立即回滚。
工具,CI 需要借助这些工具:
持续测试:
- Sismo - 一个持续的测试服务器库
开发环境:
- Vagrant - 一个轻便的创建开发环境的工具,开发,测试,部署统一环境。
自动化的构建:
自动部署
持续集成
- Travis CI - 一个持续集成的平台
- Jenkins - PHP支持的持续集成平台
- JoliCi - PHP开发的由Docker支持的持续集成客户端
- PHPCI - 一个PHP的开源持续集成平台
参考: