持续集成 关于持续集成,你知道多少?

流川凤 · 2018年09月03日 · 最后由 陈恒捷 回复于 2018年09月04日 · 2048 次阅读

持续集成(Continuous integration)简称 CI,是软件开发的一种实践方式,要求开发团队经常性进行系统集成。通过实施自动化构建,能够实现经常性、高频率的构建,并且在不断的集成过程中,持续增加软件功能,并能尽早发现系统错误。

简单说,持续集成分为两个概念,持续集成

集成

软件项目都是由多模块组成,并且由不同的人员,甚至由不同的团队完成各模块开发,那么软件在最终交付之前,必须保证能够顺利地组合在一起,这个组合的过程就是集成。

集成的具体工作可能包含联合编译、单元测试、统一打包等等。

在项目进行集成的过程中,可能会暴露出各种问题,包括模块间接口对接失败、模块间存在冲突,甚至能反应出架构设计缺陷。所以,要在软件开发的过程中尽早地进行集成尝试,若等到临近项目交付才开始做集成工作,那将非常糟糕,一定会造成项目延期。

持续

持续是指,不仅仅在交付前进行项目集成,要在整个开发过程中不断进行集成工作,甚至从项目一开始就进行集成工作。

因为集成工作能够有效地进行项目验证,那么多次集成便可以持续发现项目隐患,也就能在开发过程中尽早发现问题并持续改善。持续集成的效果和敏捷开发思想一脉相承,所以,持续集成是敏捷开发的有力保障。

但是过多的集成次数必然导致人力的浪费,人力的限制也同时限制持续集成的频率,所以,采用自动化集成是持续集成的成败关键。

编译构建和持续集成的关系

如上文所述,持续集成是一种开发实践,并非是指某一个工具。而要实现持续集成,必须要自动化的编译构建做支持,因为纯人力无法满足高频集成要求。

自动化的编译构建服务是持续集成最关键的环节,但是持续集成实践并非只靠编译构建一个环节实现,还需要代码仓库、接口测试、镜像仓库、部署管理等环境配合使用。

编译构建服务作为持续集成实践最重要的一环,主要起到如下作用:

  • 安装源码所需依赖
  • 执行 JUnit、PHPUnit 等单元测试工具
  • 执行 Jlint、ESLint 等语法检查工具
  • 将源码编译成二进制程序
  • 使用 Meven/Gradle 等工具将源码打包成 WAR/JAR
  • 使用 Webpack/Gulp 等工具打包前端资源
  • 将程序打包成 Docker 镜像

文章转载自:脉冲云

共收到 1 条回复 时间 点赞

感觉没写完?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册