将 push trigger 和 nightly build 放在一起有意义吗?

Does it make sense to have push trigger and nightly build together?

我是一名非常新的 DevOps 工程师,我主要处理 CI 个流程。

我想知道在每次推送时定义夜间构建 构建是否有意义。

貌似没有意义,既然代码是每次push后build的,为什么要半夜build呢,push到仓库的时候就已经build了

我说的对吗?

恕我直言,你是对的 - 如果同时你有一个推送触发器,那么有一个固定的时间表是没有意义的。

您仍然希望每晚构建(或其他固定时间表)的一个原因可能是您不能 运行 对每个构建进行完整测试。 例如,您可以决定只对每次推送触发的构建进行最小测试(或冒烟测试),但每天(例如晚上)进行一次完整测试 运行.

我会分享我们所做的,也许对你有帮助:

我们有三个构建层,一个用于涵盖像您指出的 Push 示例这样的案例,另一个包含一组 PowerShell 测试,还有一个包含完整测试集的计划层,大约需要 5 个小时。

正如您所想象的那样,每个案例都有一个基于时间和多项测试的场景。

据我所知,midnight build的好处是时间长running/deployment的任务可以在午夜运行

半夜完成这些任务运行,第二天就可以直接查看结果了。

在这种情况下,您可以为特定任务设置 condition 以控制它是否在午夜 运行。你可以用$(Build.Reason)来判断。

另一方面,我们建议您可以设置一个特定的时间表触发器。

每当您将更新推送到指定分支或推送指定标签时,

CI 触发器都会导致管道 运行。只有在代码更改时才会触发构建。

管道本身和运行环境的变化不会触发构建。

但他们有时可以确定项目是否可以 运行 成功。

在这种情况下,计划触发器可以运行在特定时间构建以确保项目可执行。