【问题标题】:Does it make sense to have push trigger and nightly build together?将触发器和夜间构建在一起有意义吗?
【发布时间】:2026-02-11 13:20:04
【问题描述】:
我是一名相当新的 DevOps 工程师,主要处理 CI 流程。
我想知道定义夜间构建和每次推送构建是否有意义。
貌似没有意义,既然代码是每次push后构建的,为什么还要半夜构建,push到repository的时候就已经构建好了。
我说的对吗?
【问题讨论】:
标签:
jenkins
azure-devops
continuous-integration
devops
【解决方案1】:
恕我直言,您是对的 - 如果同时您有一个推送触发器,那么有一个固定的时间表是没有意义的。
您仍希望每晚构建(或其他固定时间表)的原因可能是您无法对每个构建运行完整测试。
例如,您可以决定只对每次推送触发的构建进行最少的测试(或冒烟测试),但每天(例如晚上)进行一次完整的测试运行。
【解决方案2】:
据我所知,午夜构建的优点是运行/部署时间长的任务可以在午夜运行。
这些任务在午夜运行后,第二天就可以直接查看结果了。
在这种情况下,您可以为特定任务设置condition,以控制它是否在午夜运行。你可以用$(Build.Reason)来判断。
另一方面,我们建议您可以设置特定的时间表触发器。
每当您将更新推送到指定的分支或推送指定的标签时,CI 触发器都会导致管道运行。只有在代码更改时才会触发构建。
管道本身和运行环境的变化不会触发构建。
但他们有时可以确定项目是否可以成功运行。
在这种情况下,调度触发器可以在特定时间运行构建,以确保项目可执行。
【解决方案3】:
我将分享我们所做的事情,也许会对您有所帮助:
我们有三个构建层,一个用于覆盖您指出的 Push 示例之类的案例,另一个包含一组 PowerShell 测试,以及一个包含大约需要 5 小时的全套测试的计划。
正如你所想象的,每个案例都有一个基于时间的场景。