--- title: Continuous Integration localeTitle: 持续集成 --- ## 持续集成 在最基本的情况下,持续集成(CI)是一种敏捷开发方法,开发人员定期将代码直接合并到主源,通常是远程`master`分支。为了确保不引入重大更改,在每个可能的构建上运行完整的测试套件以对新代码进行回归测试,即测试新代码不会破坏现有的工作特性。 这种方法需要对代码库进行良好的测试覆盖,这意味着大多数(如果不是全部)代码都具有确保其功能完全正常运行的测试。理想情况下,持续集成将与完整的[测试驱动开发一起实施](https://guide.freecodecamp.org/agile/test-driven-development) 。 ### 主要步骤 以下基本步骤是实现最标准的当前持续集成方法所必需的。 1. 维护一个中央回购和一个活跃的`master`分支。 必须有一个代码存储库,供每个人合并并从中提取变更。这可以在Github上或任意数量的代码存储服务上。 2. 自动化构建。 使用NPM脚本或更复杂的构建工具(如Yarn,Grunt,Webpack或[Gulp)](https://guide.freecodecamp.org/developer-tools/gulp) ,可以自动构建,以便单个命令可以构建产品的完整功能版本,随时可以在生产环境中部署。更好的是,将部署作为自动构建的一部分! 3. 使构建运行所有测试。 为了检查新代码中是否有任何内容破坏了现有功能,需要运行完整的测试套件,如果其中的任何测试失败,则构建需要失败。 4. 每个人都必须每天将变更合并到`master` 。 5. 必须构建并完全测试每个合并到`master` 。 ### 最佳实践 还有一些最佳实践可以充分利用CI提供的内容及其带来的挑战,例如: 1. 保持快速构建,这样就不会浪费大量的开发人员时间来等待构建。 2. 在生产环境的完整克隆中测试构建。 例如,如果您有一个部署在Heroku或Digital Ocean之类的应用程序,那么您可以在那里部署测试版本,以确保它们不仅可以在测试中工作,而且可以在真实的生产环境中工作。此测试环境应在功能上与实际生产环境相同,以确保测试准确。 3. 让您轻松保持最新状态。 编码员应定期从`master`分支中提取,以便将代码与其团队的更改集成在一起。回购也应该提供给产品经理,公司高管或有时是关键客户等利益相关者,以便每个人都能轻松地看到进展。 4. 保留构建记录,以便每个人都可以看到任何给定构建的结果,无论是成功还是失败,以及引入新更改的人员或内容。 5. 自动部署。 在所有测试通过并且生产环境克隆中的测试部署成功后,通过在生产环境中自动部署作为构建过程的最后阶段,使您的应用程序与任何新更改保持最新。 ### CI服务 存在大量服务来处理持续集成的过程,这使得建立可靠的CI管道或构建过程变得更加容易。在评估这些时,请考虑预算,构建速度以及您正在处理的项目类型等因素。一些服务,如[Travis CI](https://travis-ci.org)为开源项目提供免费服务,这可以使它们成为像这样的项目的简单选择,但它们可能比其他服务(如[Circle CI](https://circleci.com/)或[Codeship)的](https://codeship.com/)构建速度慢,仅举几例。 #### 更多信息: 关于[持续集成](https://en.wikipedia.org/wiki/Continuous_integration)的维基百科条目。