【问题标题】:Does it make sense to have push trigger and nightly build together?将触发器和夜间构建在一起有意义吗?
【发布时间】:2026-02-11 13:20:04
【问题描述】:

我是一名相当新的 DevOps 工程师,主要处理 CI 流程。

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

貌似没有意义,既然代码是每次push后构建的,为什么还要半夜构建,push到repository的时候就已经构建好了。

我说的对吗?

【问题讨论】:

  • 嗨@YoavKlein。机票有更新吗?如果答案能给你一些帮助,你可以考虑accepting the useful one as answer.so它可以帮助其他遇到同样问题的社区成员,谢谢

标签: jenkins azure-devops continuous-integration devops


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    据我所知,午夜构建的优点是运行/部署时间长的任务可以在午夜运行。

    这些任务在午夜运行后,第二天就可以直接查看结果了。

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

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

    每当您将更新推送到指定的分支或推送指定的标签时,CI 触发器都会导致管道运行。只有在代码更改时才会触发构建。

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

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

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

    【讨论】:

      【解决方案3】:

      我将分享我们所做的事情,也许会对您有所帮助:

      我们有三个构建层,一个用于覆盖您指出的 Push 示例之类的案例,另一个包含一组 PowerShell 测试,以及一个包含大约需要 5 小时的全套测试的计划。

      正如你所想象的,每个案例都有一个基于时间的场景。

      【讨论】: