《配置管理最佳实践》——2.3 构建工程的核心概念

2.3 构建工程的核心概念

成功的构建工程都包含如下职责:首先构建的依赖关系易被理解且受控,基线是可识别的,在此基础上可重复地生成构建。每次构建都是针对配置项的活动。构建包含配置项,并且可产生新的配置项。几乎构建中的任何东西都可以被认为是配置项。构建工程师的首要任务,是核实所有的可执行文件、重要的脚本、文档和文本文件已被正确地识别和标识。

2.3.1 版本ID和标记可执行文件
构建工程师既能轻而易举地识别出源代码基线,也能轻松地确定构建产物的版本。这包括所有的二进制文件(中间代码和运行时模块)以及所有的配置文件。正如第1章配置管理术语中提到的,我们称这些产物为配置项,无论它们是源代码、二进制文件还是配置文件。在理想的情况下,一切事物都有一个不变的版本ID作为标识。实际上我们已经习惯了通过查看应用程序的“关于”框看产品的版本。所有的文档,包括发布说明、教程和技术说明等,都应该包含版本信息。这样,我们就能很容易地知道它们对应的是源代码的哪一个版本。

2.3.2 不可变的版本ID
对可执行文件最基本的要求就是给它们一个不可变的版本ID,然后提供简单的程序来检索版本ID。对于C++程序,通常可以把版本ID设置成一个静态的char 类型变量,然后把它打在可执行文件上。对于JAVA程序,可以写一个JAVA类去定义版本ID,然后把版本ID写到构建过程生成的JAR,WAR, 或EAR的 manifest文件中去。关键在于确保通过可执行程序的版本ID可以很容易地追溯到生成它的源代码版本。

2.3.3 打上版本标记或者标签
在某些情况下,发布构建的时候,我们会把源代码管理工具的版本标签或者标记打在可执行文件上。因为在源代码原理工具中,当用于发布的构建标签或者标记被锁定时,基于标签或者标记的构建也就确定了。那么当需要重新构建时,我们就可以基于这些信息重新构建出基线版本。某些时候,标签或者标记不容易被锁定,很容易被认为是开发人员删除了标签或者标记,然后把另外一个版本的代码附加到先前的标签或者标记上。此时,如果构建已经准备发布给QA了,那么我们就要记录下当前版本库的修订版本。

更改两行修复缺陷

好的构建工程实践可以让你很容易地识别出发布的构建是由哪个版本的代码生成的。也就是说,看一眼生产环境下正在运行的可执行文件,就可以确定是哪个版本的代码生成的这个发布。如果坚持遵循这一最佳实践,修复缺陷时就可以随时创建一个沙箱(sandbox),然后从代码基线获取正确的版本,更改两行就可以解决了。

在遇到头文件版本错误或一些编译依赖问题时就可以确定根本不需要代码回滚, 改两行代码就可以修复。这种做法十分方便和高效。
2.3.4 管理编译依赖
很多构建失败都是由于环境问题造成的。比如某个环境变量是用某开发人员的账号设置的,而两个月过后准备发布代码时,在正式环境下用其他账户构建时就会失败。不仅仅是源代码,所有的编译和运行时依赖都必须被了解且受控。这就意味着每次构建时,构建脚本必须设置所有的环境变量,以确保所有的构建依赖都是正确的。

2.3.5 独立构建
避免出现严重错误的办法之一就是独立构建每个发布版本,并且每次构建都是从顶级到下级,所有配置项都重新构建。这通常由一个独立的版本发布管理团队完成,或者由持续集成中的自动构建过程完成。许多规章制度不但明确要求职责分离,而且要求有独立的构建、打包和发布控制过程。看起来好像有很多工作,但是从合规的角度来说,这是一个最基本的要求,大多数金融服务公司、国防部门、医疗部门和政府机构都有这样的要求。曾经有一个研发经理实施了我的最佳实践后,很快地就建立沙箱,获取基线,快速修复问题并部署到生产环境中。他对这种做法非常高兴和兴奋,以前需要很多时间才能解决的问题,通过实施适当的IT控制就可以迅速做出反应。我们将会在第13章详细讨论限制访问生产环境。本书后面还会提到一些其他提高生产效率和质量的实践。

时间: 2024-10-30 21:01:59

《配置管理最佳实践》——2.3 构建工程的核心概念的相关文章

《配置管理最佳实践》——1.3 源代码管理核心概念

1.3 源代码管理核心概念 就像其他学科一样,源代码管理也有它自己的术语.可能你以前从其他一些配置管理人员那里听到一些技术行话却百思不得其解,读过这一章你就不会再对这些术语感到陌生了.这一章将会帮助你理解这些核心概念.理解了这些概念对理解源代码管理最佳实践也是非常有帮助的. 1.3.1 建立基线和时间机器许多开发者认为源代码管理就是简单地从源代码管理工具中(一个代码库)签入和签出代码.就像大多数人认为的那样,多年前一些比较老的版本管理系统的确是这个样子.如今,虽然大多数配置管理代码库具备的可靠性

《配置管理最佳实践》——导读

** 前言 **配置管理(CM,Configuration Management)在任何开发工作中都起着非常关键的作用.我从事配置管理的实施和支持工作已经超过25年,本书中将讨论的大部分内容都直接来自于个人的经验.我实施并支持过各种配置管理的实践方法并达到这样一种状态--如果建立的过程或自动化没有按照预期般运作的话,我经常会在半夜里被惊醒.作为一名教师,我向超过九百多的专业技术人员传授过工业级的配置管理工具(同样,他们在成功地完成课程后都得到了我家的电话号码,这样如果我没有教授好知识和技能,即使

《配置管理最佳实践》——2.12 构建工程的前景

2.12 构建工程的前景 构建工程是公司的关键职能部门,应该得到公司的重视和支持.大量制定的标准和架构都强调了它的重要性,业界也开发了很多工具来支持构建工程.在第14章,我们将详细介绍标准和框架.在配置管理的大背景下,构建工程逐渐被人们所了解.最近几年构建工程的日益成熟和受到的关注更加速了它的发展.也许当初公司是为了合规的要求才实现的构建工程,比如想实施IT访问控制.但是除了通过认证或者审计,应该看得更远一点.为了过程改进,我们需要弄清构建工程以及所有和它相关的核心能力,这样才能真正地提高工作效

《配置管理最佳实践》——2.10 建立构建过程

2.10 建立构建过程 实施构建工程最佳实践是一项非常具有挑战性的工作.构建工程师可以选择有益于公司的实践:也可以选择最好的工具去建立可重复的构建,实施持续集成.但是实际工作远不止此,构建工程部门还需要为开发团队提供培训和技术支持.我的经验是和研发团队合作,解决构建和部署过程中的问题,然后转到幕后做支持,把日常的工作还交给开发团队来负责.这里有个前提就是公司的合规部门允许这样做.曾经一家实施 SAS-70的公司认为可以接受这样的做法:但是另外一家公司认为这不合规,不能接受.在一些公司里因为合规的

《配置管理最佳实践》——1.2 从哪里开始

1.2 从哪里开始 实施源代码管理最好的切入点是确定源代码管理的目标和需求.我曾经工作过的一些公司,有的是集中全公司的资源来做好配置管理:而有的则是源代码管理几乎处于自我管理的状态.大多数公司开始做都是先评估其现有的做法,如确保代码安全.控制变更.建立基线和发布,包括修复补丁.当我们进行评估时,一定要确保现有的实践和进行改进的领域是依然可以工作的.采用一种平稳渐进的改进方式可以帮助避免来自团队的抵制,并且使他们在别人审视自己团队长处和短处时感觉比较舒适.我推荐敏捷和精益的做法.例如,只进行可以让

《配置管理最佳实践》——1.13 结论

1.13  结论 源代码管理是配置管理最佳实践的核心.在保护源代码的同时,利用配置管理工具和规范可提高工作效率和产品质量.在选择源代码管理工具和购买某些源代码管理功能时,一定要小心行事.培训和定义良好的使用模型有助于确保配置管理职能有效地执行且容易被接受.认真对待特殊的需求和满足这种需求时可能发生的风险.支持愿意深入了解源代码管理的人,鼓励他们分享自己的经验.源代码管理是一项团队活动.如果开发人员愿意去学习和分享配置管理最佳实践,源代码管理流程就会更加高效.

《配置管理最佳实践》——1.8 培训

1.8 培训 在选择源代码管理工具时,还要考虑供应商或者第三方机构是否有系统性的培训.有时我更倾向于那些非供应商提供的培训,因为我希望从一个没有偏见的角度去了解如何有效地使用工具,尤其是涉及工具缺陷和限制等.供应商有时认为培训只是销售过程的延伸,所以他们的培训总有种推销的味道,不能让人从公正的角度去看工具.我曾经参加过一个培训,这位讲师以前就是在供应商处工作,并且自己确实写了一些代码.他直率地讲了以前代码的一些错误,这些错误很多时候都是由于公司没有给他足够时间导致的,因为那时的首要任务是向外声称

《配置管理最佳实践》——1.12 高级特性和授权高级用户

1.12 高级特性和授权高级用户 配置管理最佳实践很多专业技术人员是源代码管理工具和规范的高级用户,而另外一些人仅仅期望以最少的精力把工作做完就可以了.团队中的每个人并非都要成为一个源代码管理工具专家,但应该认可和授权那些在源代码管理方面想提高的用户.我从同事那里学到很多经验,所以鼓励你授权给那些认真对待配置管理最佳实践且愿意分享所学的专业技术人员.良好的配置管理经验是会传播的,配置管理员应该努力宣扬和弘扬这种传播.

《配置管理最佳实践》——第2章 构建工程 2.1为什么构建工程如此重要

第2章 构建工程 构建工程是高效地把源代码生成二进制文件的学科.构建工程可以很简单,例如仅仅执行一下 Makefile 或者 Ant 脚本:也可以很复杂,比如写一个完整的支持底层技术架构的构建框架.在本章中,我们将会讨论构建工程中遇到的挑战.构建工程的核心技术,以及一些选择合适构建工具的方法.我们也会讨论如何挑选和培养构建工程师.如果公司里现在没有一个合格的构建工程师,建议利用已有的资源去完成现在的工作.配置管理中构建工程是最具挑战性和最有意义的角色. 本章全面介绍了构建工程的方方面面,包括目标