SVN中的标签很便宜。它们是否足够便宜,以使我们能够标记从CI框(TeamCity,如果有任何区别)中弹出的每个成功构建?
最佳答案
我的答案是不。这不是特定于SVN的,而是特定于良好实践的。
CI构建不应该增加构建或版本号-它们只是对所有都构建的合理检查(嘿,虽然不能运行)。标记CI构建绝对没有意义。
编辑:
您的质量检查部门不应该使用CI版本,而应该使用发布质量的版本,这些版本通常比CI版本要多(例如,在适当的地方插入了版本号,在Release中完成了编译)模式而不是“调试”等)。请记住,CI构建可能会编译,但它们可能是一堆垃圾,具体取决于已检入源存储库中的内容。
听起来像您所说的CI构建应该只称为构建,因为它是您正在执行的唯一构建。拼凑出一套不错的构建是一项工作,但是值得付出努力。为此,有许多教程和白皮书,花一些时间阅读,然后交给您的质量检查部门每当他们说出“CI构建”一词时都会感到不满意(因为这些构建应仅供开发人员使用)。
进一步编辑:
几个人评论说“为什么CI构建不能达到发行质量?”。我将尝试以简洁的方式回答此问题,而不会将其变成不适合SO的讨论。首先让我说,CI构建当然可以是发行质量。如果您能够实现这一目标,那么您将获得更多的力量,请为自己授予一枚奖牌。如果您属于此类,那么我猜您是在一个团队中的,它的代码库在不断变化。
引用Wikipedia:
并引用Martin Fowler:
这些都没有说CI构建不应该是发布质量。 但是,他们俩都没有说应该这样做。
当在同一个分支机构工作的合理规模的团队中工作时,要在每个CI构建中都达到发行质量很快变得不切实际。 CI构建始终在 checkin 后的一小段时间内开始,无法保证团队成员实际上已经完成了 checkin ,或者无法保证在计时器计时结束并开始构建时其他人尚未开始。
另一个需要牢记的想法是,在较大的团队中工作时,常规做法是在开发分支上进行CI构建,而在Release或QA分支上进行Release/QA质量构建。这样一来,开发团队就可以继续实现功能,而不会污染QA将要测试的内部版本-完成这些功能之后,它们将合并到QA团队从中获取其内部版本的分支。
我希望这能解释我有关QA团队不使用CI版本的评论。任何进一步的讨论都应该真正在programmers.stackexchange.com或其他地方进行。
关于svn - 每次成功配置CI后,我们都应该标记SVN repo 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5880350/