夜间构建和持续集成之间的区别是什么?仅仅是签入/构建/测试的频率吗?例如,如果每小时或每分钟运行一次夜间构建过程,它是否与CI难以区分?
这个问题类似但不完全相同:持续集成与夜间构建
持续集成关注于每次签入完成时构建(和运行测试)。每晚构建每天做一次,并且可能不那么强调测试。
在实践中,触发构建和运行测试的持续集成签入可能与开发人员全天所做的签入是分开的。例如,它们可能只在签入到主干时发生,而当天的大多数开发都签入到分支中。建议这些活动相对频繁地进行,例如每天一次。
更频繁地构建会产生类似的结果,但可能会导致一些浪费的努力,即在没有任何更改的情况下运行测试。另一个可能的区别是,在持续集成中,对每个构建都进行了相当程度的测试。有时需要开发人员干预来修复由此产生的错误。由于以下几个原因,这在夜间构建过程中会更加困难。包括更难以将错误与特定的更改集和负责方联系起来。这可能取决于测试的数量和所需的时间。如果一个完整的构建和完整的测试需要几分钟的时间,您可以在每次推送到源代码之后在持续集成中运行它。
对于我来说,我们的每晚构建大约需要2个小时,构建所有的源代码,并运行所有的测试。在日常构建中,我们只构建一些库并运行一些测试,这取决于开发人员可能修改的分支和内容。