当我开始构建一个持续集成服务器时,我遇到了一个声明“打破代码的构建是不好的。”完成该项目后,我得出结论
所以我的问题是#2的精神:为什么打破构建是坏事?
答案 0 :(得分:23)
要非常小心地将“打破构建”标记为坏事。这是需要立即关注的事情,但它也是开发周期中非常正常和预期的一部分。这就是持续集成非常有用的原因 - 它会在构建中断时立即告诉您,以及哪些更改集导致了它。它可以帮助您快速恢复正常。
如果你的文化惩罚了“打破建设”,那么你就有可能养成有毒的工作环境。再次,考虑它是需要立即关注的东西,但不要将其标记为“坏”。
答案 1 :(得分:20)
因为如果其他人检查了您的更改,他们将无法工作,或者如果他们这样做,他们将会降低效率。
这也意味着您在提交之前没有正确测试您的更改,这是CI中的关键。
答案 2 :(得分:13)
来自Martin Fowler http://martinfowler.com/articles/continuousIntegration.html
与CI合作的重点是 你一直在开发 已知的稳定基础。这不错 主线构建要打破的东西, 虽然它发生了所有的事情 时间它表明人们没有 仔细更新和 在提交之前在本地构建。什么时候 主线构建确实破了, 然而,重要的是它得到了 快速修复。
答案 3 :(得分:7)
因为如果其他人检查更改,他们将无法工作...... 此图片的版权归Geek&在Creative Commons License
下戳答案 4 :(得分:4)
你打破昨天发生的事情。当你的队友尝试使用源代码时。它不会建立。因此,他们将难以测试他们正在做的工作。你的团队越大,情况越糟。
答案 5 :(得分:2)
打破构建对项目进度表(以及队友的血压)有严重影响 =>然后获得最新版本的其他开发人员无法再构建自己的更改,从而延迟了他们 =>持续集成将破裂,这意味着正式测试可能会延迟
许多版本控制工具(例如TFS)可以阻止开发人员检查不编译或通过单元或代码分析测试的代码。
答案 6 :(得分:2)
当然,持续整合的重点是尽早发现问题。需要每日或更频繁的检查以将冲突减少到可管理的大小。
您应该获取存储库的最新副本并在本地构建。这将告诉您建议的签入是否会破坏构建。您解决任何问题,然后签入。
通过这种方式,集成问题保持在本地并且易于修复。
答案 7 :(得分:1)
一旦构建开始破坏,人们就不愿意获得最新的变化,并且你开始向Big Bang整合变化的致命螺旋。
答案 8 :(得分:1)
我认为只要存储库中有一个众所周知的工作分支或标记,就不会破坏构建必然是坏事。也就是说,如果你知道你的代码正在破坏今天的构建,那么在存储库中创建自己的分支,但是你将在下周修复它。然后你可以合并回主干。
答案 9 :(得分:0)
因为这意味着某人做了坏事(或者至少有些更改发生了冲突)并且您无法再构建和部署系统。
答案 10 :(得分:0)
打破构建意味着您将代码提交到共享存储库(a)不编译,或(b)不工作(单元测试失败)。从该共享存储库开发的任何其他人都必须处理您提交的损坏的代码,直到它被修复。这将导致整个团队的生产力下降。