打破构建,为什么这是一件坏事?

时间:2010-07-20 13:59:26

标签: continuous-integration

当我开始构建一个持续集成服务器时,我遇到了一个声明“打破代码的构建是不好的。”完成该项目后,我得出结论

  1. “打破构建。”是一个吸引人的短语,因为头韵而被抛出,或者
  2. 我不理解持续集成的关键要素。
  3. 所以我的问题是#2的精神:为什么打破构建是坏事?

11 个答案:

答案 0 :(得分:23)

要非常小心地将“打破构建”标记为坏事。这是需要立即关注的事情,但它也是开发周期中非常正常和预期的一部分。这就是持续集成非常有用的原因 - 它会在构建中断时立即告诉您,以及哪些更改集导致了它。它可以帮助您快速恢复正常。

如果你的文化惩罚了“打破建设”,那么你就有可能养成有毒的工作环境。再次,考虑它是需要立即关注的东西,但不要将其标记为“坏”。

答案 1 :(得分:20)

因为如果其他人检查了您的更改,他们将无法工作,或者如果他们这样做,他们将会降低效率。

这也意味着您在提交之前没有正确测试您的更改,这是CI中的关键。

答案 2 :(得分:13)

来自Martin Fowler http://martinfowler.com/articles/continuousIntegration.html

  

与CI合作的重点是   你一直在开发   已知的稳定基础。这不错   主线构建要打破的东西,   虽然它发生了所有的事情   时间它表明人们没有   仔细更新和   在提交之前在本地构建。什么时候   主线构建确实破了,   然而,重要的是它得到了   快速修复。

答案 3 :(得分:7)

因为如果其他人检查更改,他们将无法工作...... alt text 此图片的版权归Geek&在Creative Commons License

下戳

答案 4 :(得分:4)

你打破昨天发生的事情。当你的队友尝试使用源代码时。它不会建立。因此,他们将难以测试他们正在做的工作。你的团队越大,情况越糟。

答案 5 :(得分:2)

打破构建对项目进度表(以及队友的血压)有严重影响 =>然后获得最新版本的其他开发人员无法再构建自己的更改,从而延迟了他们 =>持续集成将破裂,这意味着正式测试可能会延迟

许多版本控制工具(例如TFS)可以阻止开发人员检查不编译或通过单元或代码分析测试的代码。

答案 6 :(得分:2)

当然,持续整合的重点是尽早发现问题。需要每日或更频繁的检查以将冲突减少到可管理的大小。

您应该获取存储库的最新副本并在本地构建。这将告诉您建议的签入是否会破坏构建。您解决任何问题,然后签入。

通过这种方式,集成问题保持在本地并且易于修复。

答案 7 :(得分:1)

一旦构建开始破坏,人们就不愿意获得最新的变化,并且你开始向Big Bang整合变化的致命螺旋。

答案 8 :(得分:1)

我认为只要存储库中有一个众所周知的工作分支或标记,就不会破坏构建必然是坏事。也就是说,如果你知道你的代码正在破坏今天的构建,那么在存储库中创建自己的分支,但是你将在下周修复它。然后你可以合并回主干。

答案 9 :(得分:0)

因为这意味着某人做了坏事(或者至少有些更改发生了冲突)并且您无法再构建和部署系统。

答案 10 :(得分:0)

打破构建意味着您将代码提交到共享存储库(a)不编译,或(b)不工作(单元测试失败)。从该共享存储库开发的任何其他人都必须处理您提交的损坏的代码,直到它被修复。这将导致整个团队的生产力下降。