Preface一个软件工程项目从编写、到测试、再最终交付到用户通常有很多重复且固定的步骤。虽然作为开发者,我们的核心任务是编写代码,而这些其他的步骤却也不能忽视,持续集成(Continuous Integration)则可以帮助开发者完成这些琐碎的事务,提升团队的开发效率与质量。
本文将主要介绍持续集成是什么,以及其中的好处。当然,您可能也注意到了标题后面「(一)」,没错,持续集成并非一篇文章可以概括,笔者希望尽可能将目前团队中使用到的和持续集成相关的内容进行总结,目的是为了让大家一起思考如何让持续集成更好地服务我们开发。当然,限于笔者能力,文中不免出现遗漏,也望读者能够批评和指出。 What持续集成,译自 Continuous Integration,简称 CI(在下文中,将统一使用该英文简称)。在 Wikipedia 中,也有针对 CI 特别详细且专业的介绍。简而言之,当开发者通过版本控制系统(例如 Git)提交了代码,CI 系统将为其自动执行构建、分析、测试等服务,当前面的服务一致通过,其也能直接将产品部署到生产环境,而后进入下一个循环。其中每一步都将自动触发、执行,结果也将会自动反馈回开发者。正如下图所示,CI 的重点在于 C——持续。
Why & Why not那么为什么需要 CI 呢?相比于传统的先开发,再测试,后上线的模式有哪些好处呢?在团队使用 CI 这段时间中,得出了以下主要两个好处:
及时发现错误。CI 并不能消除错误,但 CI 将发现错误的时机尽可能地提前,所以也更加节省时间来改正错误。当开发者提交代码至代码仓库时,其对于代码的熟悉程度是最高的。如果这个时候尽可能的纠正一些错误或不当,开发者将能很快注意到并将错误改正,避免了由于时间或者团队中其他人对于代码的修改所导致的问题,提升了开发效率。
自动化。市面上的 CI 平台都给了开发者比较高的自由度,能够执行脚本或命令。因此很多自动化的操作都可以制定好,来自动化地执行,节省开发者的时间。
如果这两个显而易见的好处还不足以说服,可以参考文末 Reference 中 EKATERINA NOVOSELTSEVA 的文章。那么 CI 会不会也存在什么难处呢?