持续集成(Continuous integration)简称CI,是软件开发的一种实践方式,要求开发团队经常性进行系统集成。通过实施自动化构建,能够实现经常性、高频率的构建,并且在不断的集成过程中,持续增加软件功能,并能尽早发现系统错误。
简单说,持续集成分为两个概念,持续和集成。
集成
软件项目都是由多模块组成,并且由不同的人员,甚至由不同的团队完成各模块开发,那么软件在最终交付之前,必须保证能够顺利地组合在一起,这个组合的过程就是集成。
集成的具体工作可能包含联合编译、单元测试、统一打包等等。
在项目进行集成的过程中,可能会暴露出各种问题,包括模块间接口对接失败、模块间存在冲突,甚至能反应出架构设计缺陷。所以,要在软件开发的过程中尽早地进行集成尝试,若等到临近项目交付才开始做集成工作,那将非常糟糕,一定会造成项目延期。
持续
持续是指,不仅仅在交付前进行项目集成,要在整个开发过程中不断进行集成工作,甚至从项目一开始就进行集成工作。
因为集成工作能够有效地进行项目验证,那么多次集成便可以持续发现项目隐患,也就能在开发过程中尽早发现问题并持续改善。持续集成的效果和敏捷开发思想一脉相承,所以,持续集成是敏捷开发的有力保障。
但是过多的集成次数必然导致人力的浪费,人力的限制也同时限制持续集成的频率,所以,采用自动化集成是持续集成的成败关键。
编译构建和持续集成的关系
脉冲云的编译构建服务就是面向持续集成打造的在线的构建服务,或称为持续集成器。
如上文所述,持续集成是一种开发实践,并非是指某一个工具。而要实现持续集成,必须要自动化的编译构建做支持,因为纯人力无法满足高频集成要求。
自动化的编译构建服务是持续集成最关键的环节,但是持续集成实践并非只靠编译构建一个环节实现,还需要代码仓库、接口测试、镜像仓库、部署管理等环境配合使用。
编译构建服务作为持续集成实践最重要的一环,主要起到如下作用:
· 安装源码所需依赖
· 执行JUnit、PHPUnit等单元测试工具
· 执行Jlint、ESLint等语法检查工具
· 将源码编译成二进制程序
· 使用Meven/Gradle等工具将源码打包成WAR/JAR
· 使用Webpack/Gulp等工具打包前端资源
· 将程序打包成Docker镜像
文章转载自:脉冲云开发平台