1

我一直在考虑制作我处理的项目构建之一,尽可能“独立”于我(CM)。我的意思不仅仅是通过脚本/工具实现自动化——尽管它肯定包括它。这是一个非常混乱的项目,因此“完全”自动化是不现实的。

这是我的目标:

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

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

  1. 确定构建请求过程(通过构建表单捕获构建所需的所有详细信息,这样就不会因为它在某人的脑海中而落入裂缝)

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

  3. 充分利用该工具的功能(阅读 ANT、SVN),以便提前发现潜在问题,并有助于在出现故障/问题时提供更好的警报。

  4. 每次我提到几天休假时,项目经理都可以自由地生病或偶尔休假,而不会惊慌失措。:-)

我很高兴有一些想法和想法可以帮助我朝这个方向发展。谢谢大家!

4

3 回答 3

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”。

于 2009-01-28T13:00:51.323 回答
1

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

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

于 2009-01-28T06:57:37.780 回答
0

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

  1. 从任何地方的空目录开始(如果你愿意的话,可以用白板)
  2. 确保安装了非常小的基本工具(对我来说通常是 Java + Maven + SVN 命令行客户端)
  3. 从您的 SVN/CVS/...中检出一个目录
  4. 启动单个命令(这意味着没有 25 个参数的命令)
  5. 等待(可能很长一段时间)
  6. 拥有完整的构建

如果你不能这样做,那么你的构建过程仍然不够好。

如果你认为你不能实现它,那么详细描述你需要做的除了那个列表之外的哪些动作是图灵完备的机器无法做到的。

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

祝你好运。

于 2009-01-28T16:27:18.193 回答