TFS门禁办理登机手续的缺点

问题描述 投票:24回答:2

我一直在使用TFS中的持续集成(CI)构建。但是,在我上一个项目中,我们开始使用门控签入触发器。

使用门禁办理登机手续有什么不利之处吗?因为如果它阻止团队检查损坏的代码,那么CI触发器的目的是什么?

tfs continuous-integration checkin
2个回答
39
投票

门控签入是一种持续集成构建的形式。在TFS中,它创建一个包含正在验证的代码的shelveset,然后运行该代码的构建。只有当代码成功构建并且所有已配置的单元测试都通过时,代码才会实际提​​交。

持续集成是不同的 - 在CI中,无论构建的结果如何,都会提交代码。如果由于提交了错误的代码而导致CI构建失败,则代码仍然存在于源代码管理中,可供所有人使用。

现在对于基于意见的部分:如果你有大量具有不同技能/经验水平的开发人员,那么门控签入很棒,因为它可以防止破解代码进入源代码控制。缺点是它增加了代码被提交和代码可供其他人使用之间的时间,因此可能导致人们坐在他们的拇指周围等待构建成功完成的情况。

我建议使用门控办理登机手续作为权宜之计。如果您有大量的封闭式签入构建失败,那么它正在完成其工作并防止错误的代码被提交。如果随着时间的推移,团队成熟并且门禁签到版本很少失败,那么它的用途就会减少,并且应该切换到持续集成并纠正失败的版本,而不是延迟每次提交的机会,而是出现问题。


3
投票

门控签到使得更难和更慢。这通常是一件坏事,因为:

  • 在TDD中,成员应该能够通过失败的测试推送提交
  • 将错误报告为失败的测试非常有用
  • 在WIP(正在进行中)分支上进行协作时,成员应该能够推送脏更改以使其快速可用于其他人
  • 在进行重大改变时,让其他成员在投入时间完成之前审查未完成的工作会很有用
  • 许多人喜欢定期将不完整的工作作为一种快照/备份形式
  • 当频繁地在分支之间切换时,提交不完整的工作是很好的(特别是对于新文件只能保留有限的帮助)
  • 质量保证不应该有时间限制,但承诺不应该花费很长时间
  • 无论如何,代码的质量保证应该在干净的环境中进行,给定的本地环境很可能不像CI服务器那样纯净
  • 类似地,QA通常应该使用环境矩阵(不同的编译器版本,不同的浏览器,不同的OS,......),设置的成本更好地投入到中央CI中

那么gated检查的场景是可以的:

  • 您的VCS使分支变得困难,或者您的公司不允许分支
  • 这个项目很小
  • 只有一个开发者
  • 没有p
  • 只有特定的长寿分支受到门的保护(但这不是CI的替代)
© www.soinside.com 2019 - 2024. All rights reserved.