【问题标题】:When to Use Gated Check-In?何时使用门控值机?
【发布时间】:2011-11-28 16:52:03
【问题描述】:

我正在使用 TFS 2010。目前我仅在主干 (MAIN) 分支上使用 Gated Check-in 构建。而且,我在 DEV 和 RELEASE 分支上使用 CI。

  • 为什么不在所有分支上使用 Gated Check-in 构建?
  • 在什么情况下,您不应该在 DEV 和 RELEASE 分支上使用 Gated Check-in 构建?
  • 总是在每个分支上使用 Gated Check-in 构建会更好吗?

【问题讨论】:

  • 你能用你自己的话解释一下触发构建和持续集成之间的区别吗?
  • 克伦韦克;我纠正了我的问题。它应该是 Gated Check-in,而不是 Triggered。
  • 谢谢!现在很清楚了。

标签: build continuous-integration tfsbuild gated-checkin


【解决方案1】:

我不知道为什么对您所做的每项更改都进行门控签入。但是,(通常)进行门控签入有一个先决条件:您的整体构建时间不应超过几分钟,包括您希望在签入被接受之前执行的任何(单元)测试.否则,签入需要很长时间才能被接受,或者更糟糕的是,开发人员会被拒绝。对于开发团队来说,这也有点复杂,或者至少要习惯一些。

持续集成(我认为以滚动构建的形式进行了优化)允许开发人员签入其代码,而无需不确定是否会被接受。重要的是,开发人员必须尽快面对签入的负面最终结果。如果你能做到这一点,我比门控签到更喜欢它。

【讨论】:

  • 在拥有大量代码库的大型团队中,仅在更高级别的发布类型分支中才需要使用门控。团队无法承受功能/开发分支的限制。由于团队的规模和代码库,它支持。请参阅下面的帖子。
【解决方案2】:

在我们非常庞大的团队中,我们还在主分支中进行了门控,并在开发/功能分支中进行了 CI(其中很多)。

Gated 为分支提供了更多保护,但由于团队庞大且代码库庞大,如果整个开发团队都在该分支中进行更改,它可以备份队列。

CI 提供保护,让开发人员更加信任并知道任何问题都会很快被发现。它更乐观一些,并且允许团队更快地移动,这适合开发分支。

在这两种情况下,开发人员都会运行单元测试并测试他们正在更改的代码。 CI(影响团队)和 Gated(在队列中消耗时间)不应该取代测试——应该有一个比我没有尝试过的更复杂的合理解释。

整个团队在周期的大部分时间里都在使用 CI 的特性/开发分支中,而在游戏结束稳定期间,在更高级别的分支中,更多的人 - 后两种情况都支持门控的情况。

在大型团队中,我们还需要并行完成 CI 构建和滚动测试,以便在构建时间不重要且完整的测试套件也不重要时更快地发现问题。在那种情况下,人们正在签入,CI 正在接受最后一批签入,运行构建,当构建下降时,另一台机器正在启动并运行测试套件。

【讨论】:

  • 如果门控队列正在备份,听起来团队将从合并提交中受益。假设大多数更改不会被拒绝,一次验证 2 个或更多更改可以减少队列等待时间。
【解决方案3】:

我更喜欢 Gated Check-In 无处不在,因为它限制了开发人员签入的痛苦,而不是当有人(不可避免地)犯错时与整个团队分担这种痛苦。

如上所述,快速办理登机手续很重要。我有时会有一个运行最重要检查的 Gated Checkin,然后在 Gated Checkin 成功后启动 CI 构建以运行更耗时的检查。

【讨论】:

  • 我不确定是否能解决问题。在我的工作中,一个完整的构建 + 所有测试都需要 24 小时在新硬件上进行。我们有可以在大约 30 分钟内运行的冒烟测试,但问题是自然而然地更彻底或本质上更耗时的测试(例如测试您可以成功地从数据库的一个版本迁移到具有大量数据的另一个版本)得到推入“长”类别。通常烟雾不会捕获任何东西,然后 CI 将运行“长”类别并且十几个测试失败。到那时,审阅者通常已经批准了代码,无论如何团队的其他成员都受到了伤害
猜你喜欢
  • 1970-01-01
  • 2011-03-27
  • 2016-04-04
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多