持续集成与夜间构建

Bri*_*ian 14 continuous-integration build-process

这篇文章让我感到疑惑; 对于一种情况而言,夜间建筑是否比持续整合更好?对于持续整合,答案的共识似乎是相当不平衡的,是传福音还是当持续整合是一种选择时,是否真的没有理由使用夜间构建?

Ada*_*ire 17

如果你真的在与所有可用的测试进行持续集成,那么夜间构建将是多余的,因为那天检查的最后一件事已经过测试.

另一方面,如果您的CI机制仅涉及运行所有可用测试的子集,例如因为您的某些测试需要很长时间才能运行,那么您可以使用nightlies另外运行所有测试.这样可以让你及早发现许多虫子,如果你不能及早捕捉它们,你至少可以在一夜之间捕获它们.

但是,我不知道,如果技术上仍然是CI,那么每次只做一次"部分"构建,忽略一些测试.

  • 应用程序可能具有可能会中断的外部依赖项,了解这种情况发生的时间会很有用。还有一些耗时的任务,如代码分析或性能测试,可以按需使用版本控制运行,但这可能需要一段时间。如果每天进行开发,那么 CI 服务器可以处理其中的大部分,但有时由于假期、其他项目、谈判等原因,开发会停止一段时间。 (2认同)

Ste*_*ham 10

在我们的组织中,夜间构建和CI构建有两个不同的目的.CI构建是一个"最新代码"构建,其中单元测试将按照您的预期在最后一次检入中运行.我们还在CI构建上运行了几个代码度量标准.

但是,对于夜间构建,我们只包含已通过同行评审过程并准备进行测试的源代码.

这样,每晚构建总是包含用于测试的"功能就绪"的构建,而CI构建包含功能(在单元测试通过的范围内)可能尚未准备好发送到测试组的功能.

测试组仅从其中一个夜间构建中编写新CR,而不是CI构建,尽管这些CR也可用于非正式探索型测试.

  • 您如何区分功能就绪代码和正在开发的代码?这两个分支是否在存储库中,并且cl代码被合并到"功能就绪"分支,因为它变为"功能就绪"? (3认同)
  • 我也喜欢这个; 但我认为你应该澄清VCS方面如何实现"功能就绪"的分离. (2认同)

Eli*_*lie 5

是的,如果您有一个想要附加到构建的进程,但它是资源很重的.例如,在我的团队中,我们在夜间构建期间运行JTest.我们不能在白天运行它,因为:

  1. 它需要大量资源,而这些资源可能无法使用
  2. 每次完成需要4个小时