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

Continuous integration 破坏构建,为什么这是一件坏事?,continuous-integration,Continuous Integration,当我开始构建一个持续集成服务器时,我遇到了这样一句话:“破坏[代码]的构建是不好的。”在完成该项目后,我得出结论: “破坏建筑”是一个吸引人的短语,因为头韵,或者 我不理解持续集成的一个关键要素 因此,我的问题是本着第2条的精神:为什么破坏构建是一件坏事?因为如果其他人检查了您破坏的更改,他们将无法工作,或者如果他们检查了,他们的工作效率将降低 这也意味着你在提交更改之前没有正确地测试你的更改,这是CI的关键。因为这意味着有人做了坏事(或者至少有些更改发生了冲突),你不能再构建和部署你的系统。如

当我开始构建一个持续集成服务器时,我遇到了这样一句话:“破坏[代码]的构建是不好的。”在完成该项目后,我得出结论:

  • “破坏建筑”是一个吸引人的短语,因为头韵,或者
  • 我不理解持续集成的一个关键要素

  • 因此,我的问题是本着第2条的精神:为什么破坏构建是一件坏事?

    因为如果其他人检查了您破坏的更改,他们将无法工作,或者如果他们检查了,他们的工作效率将降低


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

    因为这意味着有人做了坏事(或者至少有些更改发生了冲突),你不能再构建和部署你的系统。

    如果你像昨天发生的那样破坏了构建。当你的队友尝试使用源代码时。它不会建立。因此,他们将努力测试他们正在做的工作。你的团队越大,情况就越糟。

    一旦构建开始崩溃,人们就不愿意接受最新的更改,你就开始了一个致命的螺旋式的变化整合

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

    来自Martin Fowler

    使用CI的全部要点是 你总是在一个 已知稳定碱基。还不错 主线建设要中断的事情, 虽然如果它一直都在发生 时间表明人们并没有被遗忘 在更新和更新时要足够小心 在提交之前在本地构建。什么时候 主线的构建确实中断了, 然而,重要的是,它得到了 快速修正


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


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

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

    在标记“破坏构建”为坏事时要非常小心。这是需要立即关注的事情,但它也是开发周期中非常正常和预期的一部分。这就是为什么持续集成如此有用的原因——它会在构建被破坏时立即告诉您,以及是什么更改集导致了它。这有助于你快速回到正轨


    如果你的文化惩罚“破坏体型”,那么你就有可能培养出一个有毒的工作环境。再次,认为这是一个需要立即注意的东西,但不要把它标记为“坏”。

    < P>因为如果其他人检查这些变化,他们就不能工作……
    这张图片的版权归Geek&Poke所有。当然,持续集成的全部目的是尽早发现问题。需要每天或更频繁地签入,以将冲突减少到可管理的程度

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


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

    通常,打破任何东西都是不好的,而不是“打破业务”,等等。如果你“打破构建”,你就不再有一个正常运行的系统,这是一种持续集成的点。这怎么可能不坏呢?所以你说的破坏意味着有代码没有被提交到源代码库中?对。“破坏构建”通常指提交未经测试的代码,这些代码将无法编译(或以其他方式显著失败),并阻止您的同事。。。你知道,工作:)这是最简单的应用程序。在最极端的应用程序中,任何引入bug的更改都是可能的。我想说两个最常见的用法是1-导致它无法编译,或2-导致一个严重的错误,妨碍其他人的工作。显然,您不能总是提交无bug的(哦,如果可以的话!),但您确实需要确保您的更改不会以某种方式阻止菜单出现,导致大量错误消息出现,当然也不会导致编译错误。(顺便说一句,签入中的大多数编译错误都是当您忘记签入其中一个文件时)我应该指出,对于破坏构建的定义并不严格,但“当您看到它时,您就知道了”。您通常可以通过刚签出您的代码的人的沮丧程度来定义构建的“破坏”程度。您基本上是对的,只是如果您正在创建自己的分支,这不是持续集成,是吗?很高兴您这么说。我的评论当然暗示这是“一般的坏事”,而不是“坏事发生时,你应该尝试解决。”糟糕的是,当有人不断破坏构建时,你应该尝试完成工作。。“那太糟糕了。”乔科我的意思是避免破坏建筑的惩罚文化。这种文化最终会阻止人们做出更多的承诺。如果不提交,就不能破坏构建!更好的做法是制定政策,以避免破坏市场秩序的可能性