目前,我们的组织不会实施持续集成。
为了让我们启动并运行CI服务器,我需要制作一份证明投资回报的文件。
除了通过早期发现和修复错误来节省成本之外,我对我可以在本文档中提到的其他好处/节省感到好奇。
答案 0 :(得分:15)
我喜欢CI的第一个原因是它有助于防止开发人员检查破坏的代码,这有时会削弱整个团队。想象一下,如果我在去度假之前进行了一些涉及一些数据库模式更改的重要检查。当然,我的开发盒上的一切工作正常,但我忘了签入db schema的变更内容,这可能是也可能不是微不足道的。好吧,现在有一些复杂的变化涉及数据库中新的/已更改的字段,但是第二天在办公室的任何人实际上都没有新的模式,所以现在整个团队都在关闭,而有人正在尝试复制你已经完成的工作,只是忘了办理登机手续。
是的,我使用了一个特别令人讨厌的db更改示例,但它可能是任何东西,真的。也许部分签到一些电子邮件代码会导致您的所有开发人员向您的实际最终用户发送垃圾邮件?你说出来......
所以在我看来,避免这些情况中的任何一种都会使这种努力的投资回报很快得到回报。
答案 1 :(得分:10)
如果您正在与标准项目经理交谈,他们可能会发现持续集成在简单的投资回报率方面有点难以理解:他们将获得的物理产品换成给定的美元并不是很明显投资。
以下是我学会解释的方法:“持续集成可以消除项目中的各类风险。”
Risk management对于程序管理员来说是一个真正的问题,他们在软件工程类型的正常范围之外,他们花费更多时间编写代码,而不是担心如何花费美元。有效地与这些人合作的一部分就是学会用他们能理解的术语来表达我们所知道的好事。
以下是我在这些对话中提出的一些风险。请注意,有了合理的项目经理,我已经在第一点之后赢得了论证:
答案 2 :(得分:5)
CI协助发现问题。测量当前发现代码中的损坏版本或主要错误所需的时间。将在该时间段内使用该代码的每个开发人员的成本乘以公司的成本。乘以一年中发生破损的次数。
有你的电话号码。
答案 3 :(得分:4)
每个成功的构建都是候选版本 - 因此您可以更快地提供更新和错误修复。
如果构建过程的一部分生成安装程序,则这也允许快速部署周期。
答案 4 :(得分:3)
来自Wikipedia:
我们使用CI(每天两次构建),它为我们节省了大量时间,使工作代码可用于测试和发布。
从开发人员的角度来看,当通过电子邮件发送给全世界(开发人员,项目经理等)的自动构建结果时,CI可能会令人生畏: “加载'XYZ.dll'的DLL构建错误失败。”你是XYZ先生,他们知道你是谁:)!
答案 5 :(得分:3)
这是我自己经历的例子......
我们的系统有多个平台和配置,70多名工程师在相同的代码库上工作。对于不太常用的配置,我们遭受了大约60%的成功,而对于最常用的配置,我们有85%的成功。每天都有大量关于编译错误或其他失败的电子邮件。
我做了一些粗略的计算,并估计我们每个程序员平均每天损失一小时的不良版本,每天总计将近10个工作日。这并不考虑当程序员拒绝同步到最新代码时迭代时间内发生的成本,因为他们不知道它是否稳定,这会花费我们更多。
在部署由Team City管理的构建服务器机架后,我们现在看到所有配置的平均成功率为98%,平均编译错误在系统中停留数分钟而非数小时,而且我们的大多数工程师现在都可以轻松入住最新版本的代码。
总的来说,我会说,在项目的最后三个月,与部署CI之前的三个月相比,我们总体节省的保守估计约为6个月。这一论点帮助我们获得了扩展构建服务器的资源,并将更多的工程师时间用于其他自动化测试。
答案 6 :(得分:1)
我们最大的收获来自于每晚都有质量保证。在我们的旧系统下,每个产品,至少每周一次,会在凌晨2点发现有人检查了错误的代码。这导致QA没有每晚构建测试,补救措施是向发布工程师发送电子邮件。他们会诊断问题并联系开发人员。有时它需要在QA实际上有一些工作之前的中午。现在,除了每晚都有一个好的安装程序,我们实际上每晚都会安装在所有不同支持配置的VM上。所以现在当QA进来时,他们可以在几分钟内开始测试。现在,当你想到旧的方式时,QA抓住安装程序,启动所有vms,安装它,然后开始测试。对于每个QA人员,我们可以为每个配置节省QA大约15分钟。
答案 7 :(得分:0)
有免费的CI服务器,以及像NAnt这样的免费构建工具。您可以在开发箱上实现它以发现好处。
如果您正在使用源代码控制和错误跟踪系统,我认为始终是第一个报告错误(在每次签到后几分钟内)将非常引人注目。再加上你自己的错误率下降,你可能会有一个销售。
答案 8 :(得分:0)
投资回报率实际上是提供客户需求的能力。这当然是非常主观的,但是当最终客户参与实施时,您会看到客户开始欣赏他们所获得的内容,因此您在用户接受期间往往会看到更少的问题。
因此,它有助于更快地失败,这有助于提前降低风险。