如何使构建(java)尽可能“独立于CM”? (CM =配置管理器)

时间:2009-01-28 06:33:15

标签: build-process build-automation simplify

我一直在考虑制作一个我处理的项目构建,尽可能“独立”我(CM)。通过这个我不仅仅意味着通过脚本/工具自动化 - 虽然它肯定包括它。这是一个很混乱的项目,因此“全面”自动化是不现实的。

这是我的目标:

任何人都应该能够进行构建(具有一些自动化和一些文档/指南) - 例如 - 新手CM,或者甚至是没有CM经验的开发人员。

我的第一个想法是通过以下方式实现这一目标:

  1. 指导构建请求流程(通过构建表单捕获构建所需的所有详细信息,以便没有任何东西因为它在某人的头脑中而落空)

  2. 简化构建步骤,以便可以在一个简单的文档中捕获它们作为一系列命令 - 训练有素的猴子应该能够运行构建(好吧......不要侮辱但是 - 你明白了) :-))

  3. 使用该工具的功能(读取ANT,SVN),以便提前发现潜在问题,并在发生故障/问题时提供更好的警报。

  4. 在没有项目经理每次提起几天的情况下都没有得到惊恐发作的情况下,可以自由生病或者偶然度假。 :-)

  5. 我很乐意有一些想法和想法来帮助我朝这个方向发展。谢谢大家!

3 个答案:

答案 0 :(得分:2)

Urbancode,我们称之为“Bob the Builder”反模式。好消息是鲍勃(你)希望摆脱困境。如果建筑工人不能去度假或生病而没有停止过程的部分,那么确实存在一个不可接受的问题。如果我是一个博彩人,当你开始将过程简化为“训练过的猴子”级别的过程时,你会想知道为什么当你聪明并且实际上可以添加时,你花时间做这些死记硬背的事情价值在某处。

我们书中“Bob the Builder”综合症的症状:

  1. 所有构建请求或特定类型的构建都要经过个人或小团队。
  2. 对开发人员来说,对这些构建请求的响应非常缓慢。如果构建团队在午餐时间,他们会等待数小时。
  3. Bob或Bobs团队花费大量时间做死记硬背任务。
  4. Bobs回家过夜,去吃午饭,度假或生病会妨碍团队完成工作的能力。

我们告诉AnthillPro客户将所有这些内容推送到他们的自动化中。有两种使用不同机器,不同构建号等的构建类型应该不是问题。

第一步是愚弄这个过程。尽可能地减少复杂性,以便您可以进入“训练有素的猴子”过程。一旦你接近了,用电脑取代猴子就很容易了。

我会给出更具体的建议,但我认为你没有告诉我们复杂性来自何处,而不是混乱。有时在这种情况下你需要攻击混乱和不良做法。您是否正在构建“源代码中的此基线以及这两个文件和这三个文件?”这将是棘手的,可能需要循环中的CMer。找到一种禁止它的方法。用“创建一个分支,并对该分支进行特定更改”替换它可以使该构建的构建成为可能。

您应该能够将这些变化视为高风险。即使你很好,你也会有糟糕的日子,并希望尽可能地将人为错误排除在外。与此同时,如果您正在为开发人员和自助服务(可能是开发和管理层所需)做出更快的响应,那么有些事情需要自动化/可以实现。

在过渡期间拥有更好的形式可能会很好,并且使用你的工具总是很好但我会非常积极地攻击“受过训练的猴子”问题。训练有素的猴子(或计算机)无法完成的任何事情应该是离开过程的候选人。一旦你达到“训练有素的猴子”状态,就可以实现你的构建自动化,这样你和开发人员都不需要成为猴子。这会将您的角色从“Bob the Builder”更改为“Bob the Build System Owner”。

答案 1 :(得分:1)

  

简化构建步骤,以便可以在一个简单的文档中捕获它们作为一系列命令 - 训练有素的猴子应该能够运行构建(好吧......不要侮辱但是 - 你明白了:-) )

如果可能的话,可以通过脚本一步一步地运行构建(可能是ant,bash,maven或者其他任何脚本)。这应该是目标,所以基本上任何人都可以进行构建。

答案 2 :(得分:0)

开发构建过程的目标应该是:

  1. 从任何地方的空目录开始(tabula rasa,如果你愿意的话)
  2. 确保安装了一个非常小的基本工具工具(对我来说通常是Java + Maven + SVN命令行客户端)
  3. 从SVN / CVS /...
  4. 中查看单个目录
  5. 启动单个命令(这意味着没有25个参数)
  6. 等待(可能需要一段时间)
  7. 完成您的完整版
  8. 如果你不能这样做,那么你的构建过程仍然不够好。

    如果您认为无法实现,请详细描述除了该列表之外您还需要执行哪些操作。

    通常没有这一点。这只是缺少的工具/技术诀窍/动力。我个人发现,这样做更容易,而不是描述为什么不能这样做。

    祝你好运。