现代IT系统的开发多是由一个数人组成的开发团队共同完成,在多人协同开发的情况,如何进行有效的代码集成将直接影响到项目的进度、效率、质量。
什么是持续集成
持续集成的一个要点是频繁的进行代码集成,并且快速解决集成代码中的错误。以下是持续集成的一个典型流程:
关键实践
维护统一的代码库
使用代码库最常犯的错误是只把代码储存在代码中,而忽略了测试用例脚本、配置文件、数据库schema文件、安装脚本、以及第三方库。什么应该提交至代码库的基本原则是:当我们要部署一台刚初始化的服务器时,可以通过代码库中的内容完成部署。自动化构建
构建的过程尽量优化,以缩短构建的时间。例如:一个小的变更,可能不需要对整个项目进行全盘的构建,而只需要对其修改、影响部分进行构建即可,从而减少不必要的构建时间。
确保自己的代码经过测试
确保代码经过自测试的最佳实践是通过自动化测试。代码在提交前通过已定义的测试集进行测试,以保障基础的质量水平。每天提交代码
集成其实是程序员间的一种交流方式。频繁的代码集成,有助于程序员间进行互相了解,程序员可以更早的发现代码间的冲突,从而可以今早解决主干代码的问题,保证主干代码的健康。否则,问题日积月累,积重难返。
代码提交成功以提交后构建成功为准
这部分有两类型典型的错误用法。一种是程序员提交代码后,不需要参考集成构建的结果,则认为集成已经成功了;另一种是代码的集成构建通常在一天的晚上进行,而不是代码每次提交后进行。这两种做法的主要问题是代码提交后,若不经过构建,无法发现潜在的问题。即使是每天晚上进行集成构建,当发现问题时,已经很难分辨问题的责任人。因此,这部分的最佳实践应该是代码提交后,立即执行构建。若出现问题,程序员即时进行处理。当构建成功后,才认为代码提交成功。立即解决代码集成出现的错误
当集成构建出现问题时,需要立即解决问题。否则问题越积越多,复杂性越来越大,则积重难返。加快构建的速度
构建的速度将直接影响开发的效率。但是在构建的过程中,如果涉及到大量的外部系统、数据库调用、测试集,这都会降低构建的效率。但是,如果通过stub、减少测试集等方法来提高构建效率,这又会影响构建的质量水平。因此,为了提高构建效率,一种比较好的实践是将构建分为几个阶段。第一个构建阶段,通过stub的方式减少对外部系统的依赖,保持必要的测试集尽量保障构建的效率。第二个阶段,进行比较全面的集成测试,以保障质量。沟通这种方式,保障开发效率以及开发质量间的平衡。在类生产商环境中进行测试
尽量在模拟生成环境进行测试。可通过容器、云计算的方式尽量模拟生产环境。让可执行的包可以被很容易的获取
在敏捷实践中,快速向用户展示可用的产品获得用户反馈是保障项产品成功的关键。因此,用户、产品经理、相关干系人能够轻易的找到可执行的产品进行试用是持续集成的最佳实践之一。
- 自动化发布
在集成完成后,通过自动化的方式对接持续交付进入交付管道。
持续集成的好处
简单来说持续集成带来的最大的好处是降低来风险。虽然持续集成并没有减少bug的产生,但是通过快速集成、构建的方式,今早的发现问题,解决问题,从而加强来系统的质量,强化了整个团队对系统的信心。
参考文献
- Continuous Integration - https://www.martinfowler.com/articles/continuousIntegration.html
pstrike 2018.08.20 于广州天河
【尊重版权:转载之前请先联系我】