第2章 构建工程
构建工程是高效地把源代码生成二进制文件的学科。构建工程可以很简单,例如仅仅执行一下 Makefile 或者 Ant 脚本;也可以很复杂,比如写一个完整的支持底层技术架构的构建框架。在本章中,我们将会讨论构建工程中遇到的挑战、构建工程的核心技术,以及一些选择合适构建工具的方法。我们也会讨论如何挑选和培养构建工程师。如果公司里现在没有一个合格的构建工程师,建议利用已有的资源去完成现在的工作。配置管理中构建工程是最具挑战性和最有意义的角色。
本章全面介绍了构建工程的方方面面,包括目标、原则、基本概念等;介绍了构建工程最佳实践中如何理解和运用这些核心概念,包括版本ID、依赖关系、生成构建。还讨论了当前流行的很多工具,以及质量成本和相应的培训。这里介绍了构建工程师这个角色,同时讨论了建立一个可靠可重复的构建过程和应用框架中构建工程师的重要性。本章也涵盖了持续集成最基础的内容以及构建工程的前景。构建工程是配置管理的核心职能,本章将在这些方面进行深入的介绍,希望能给大家一个正确的方向。
2.1 为什么构建工程如此重要
构建工程可以重复为研发团队准确地编译和链接代码。构建工程可以快速地重新构建一个版本,不但能提高研发团队的工作效率,还能促进软件的开发。快速构建对于任何软件开发都是很重要的,尤其是敏捷和迭代开发很早就强调了这一点。正确的构建可以避免很多将对开发团队和整个公司产生重大影响的问题。我看到过一个发布和部署中的严重问题,甚至影响到了世界经济(第6章会详细介绍这个例子)。构建工程中的问题也会产生同样的影响。构建工程在提高应用程序质量的同时,还可以提高整个公司的生产效率。
为什么优秀的开发人员其构建却有问题
构建工程有时候是项很令人头疼的工作。比如,有的公司开发团队甚至经常长时间无法获得一个可靠的可执行文件。原因可能有以下几个:第一个原因是没有实行可靠的源代码管理实践。这导致了我们不知道怎么能得到一份版本相同的源代码。第二个原因是构建过程太复杂且不可靠。第三个原因是不支持新的构建需求。比如,需要对现有自动化构建过程大做修改后才能支持新的构建需求。我觉得最好的方法是重新开始,而不要在自主研发的解决方案里挣扎。这些自主开发的解决方案只有那些顾问可以理解,可惜他们早已离开去支持下一个合同了。我在很多大型企业都看到过这些情况,包括银行和对冲基金公司。