《配置管理最佳实践》——2.7 把构建做得更好

2.7 把构建做得更好

在很多公司,已经建立了良好的构建流程,我的角色就是帮助改善现有流程,以支持更多的环境(比如QA环境和生产环境)。有段时间,我发现有的构建过程只有技术背景很强的专业技术人员才能理解和使用好,且在使用中极易出错,结果也不可靠。构建工程的目的是提供一个可靠、快速、清晰的构建过程来支持产品的构建和部署。

2.7.1 鲍勃的构建秘方
这一小节将介绍建立可靠的、可重复的构建过程的秘诀。在很多环境中,我的方法都可以帮助开发团队成功地完成构建,并且部署到QA环境(生产环境)中去。通常情况下,我都是在项目或者公司濒临失败时才加入其中。如果采用我的方法,通常可以在3个构建之内解决他们的构建问题。我的很多技术都是基于在纽约大学工业组织心理学研究生课程中学到的方法。在其他学科学到的知识帮助我建立了一套独特的方法。团队失败的原因有很多,只要是构建工程的问题都可以通过改进构建来解决。

2.7.2 测试驱动的构建
构建工程师不仅要随时关注构建的过程,还要关注开发人员调试构建、解决构建问题的方法,甚至是每一步的操作。有这样一个实例,我观察到每当构建失败,开发人员就会查看某个特定的 JAR 文件是否被创建,是否包含在了 WAR 文件当中。我并不完全了解为什么有的时候这个 JAR 文件没有被创建成功。之后在构建脚本中,我也加入了这一步骤,在以后的每次构建中,构建脚本都会检查这个JAR文件是否存在。如果某步检查到这个 JAR 文件没有成功生成,那么构建脚本就会提前通知我们,JAR文件缺失将会导致构建失败。虽然这样做可能有点小题大做,但是主动测试构建将会帮助你生成可靠的构建,并且一旦出现错误你也会很早就得到提示。开发人员一般都坚信自己的构建是完全没问题的,因此并不会主动地去测试自己的构建。

2.7.3 信任,但仍要核查
作为构建工程师,我的做法是“信任,但仍要核查”。也就是说我们信任生成的每个构建,但仍然需要对它们进行测试。当你的构建结果事关他人的健康和安全时,这就尤其重要。也许一个构建的错误可能就会导致飞机相撞或者其他更严重的事件。他人的健康和安全都是至关重要的事情。例如,航空工程师花费了大量时间制造准确、易理解的控制器,以避免出现问题。

2.7.4 飞机的驾驶舱
在某些领域,经常需要付出大量的努力去避免可能出现的错误。之所以这样关注整体质量,是因为任何一个错误都可能导致有人丧生。就像本节前面讨论的一样,采用这样的思路设计驾驶员座舱就是为了减少错误的发生。上面的控制器都容易理解,接口也很清晰。我觉得软件工程师需要向飞机驾驶舱设计师学习,把它应用到应用程序构建、部署过程和自动化的设计上。曾经尝试创建可以避免错误,且可以主动检测构建问题的构建系统。构建和部署的自动化需要想办法避免可能的错误发生。我做过多次构建工程改进的项目,每次都是把团队从不稳定、不可靠的构建状态中解救出来,成功地实现一个完全可重复的可靠的流程。下面列出来一些重要的关注点,供设计或改进构建系统时参考:

  • 构建过程的每一步都要易读且易执行
  • 自动检查构建过程中可能的出错点,核实构建是否成功
  • 结构化组织自动构建过程,避免一个错误破坏整个构建
  • 通过状态公告板和构建报告展示构建状态
时间: 2024-10-15 18:47:33

《配置管理最佳实践》——2.7 把构建做得更好的相关文章

《配置管理最佳实践》——2.5 构建工具评估和选择

2.5 构建工具评估和选择 目前有很多好的构建工具,也有很多相关的最佳实践教程.这些教程可以指导你建立一个可靠.可扩展的构建流程.这里将会讨论一些工具和最佳实践,你可以有选择性地实施其中一些来支持公司的开发工作.目前软件开发中主要有几类比较流行的构建工具.不久以前,有段时间构建自动化仅仅意味着使用 Make(也许还有一些 shell 脚本)自动执行构建过程的每一个步骤.这种方法可以很好地支持 C 和 C++ 的构建.但是在实现的时候,要注意底层不同平台带来的差异性.我在 HP-UX, Solar

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

2.3 构建工程的核心概念 成功的构建工程都包含如下职责:首先构建的依赖关系易被理解且受控,基线是可识别的,在此基础上可重复地生成构建.每次构建都是针对配置项的活动.构建包含配置项,并且可产生新的配置项.几乎构建中的任何东西都可以被认为是配置项.构建工程师的首要任务,是核实所有的可执行文件.重要的脚本.文档和文本文件已被正确地识别和标识. 2.3.1 版本ID和标记可执行文件构建工程师既能轻而易举地识别出源代码基线,也能轻松地确定构建产物的版本.这包括所有的二进制文件(中间代码和运行时模块)以及

《配置管理最佳实践》——2.8 构建工程师的角色

2.8 构建工程师的角色 构建工程师通常需要有软件开发的背景,扎实的技术知识,一定程度的编程能力(包括 Perl, Python, Shell 和 XML),可以建立可靠.可重复的构建过程.工作中很难找到一个合适的构建工程师,因为具有很强开发背景的专业技术人员通常都更愿意做项目而不愿意写构建系统.构建工程师是一个非常有意思也很有挑战的职位.其他的开发人员很容易使用到新的技术.新的框架,而构建工程师却并不总能把前沿的技术应用到工作中去.但建立一个高质量且高效率的构建工程的确是一项十分需要创造力的工

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

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

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

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

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

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

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

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

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

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

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

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