问题描述
我是一名相当新的DevOps工程师,我主要处理CI流程。
我想知道是否应该在每次推送时同时定义每晚构建和。
表面上看,这是没有意义的,因为如果代码是在每次推送之后生成的,为什么您需要在午夜进行生成,所以将其推送到存储库时已经生成了。
我说的对吗?
解决方法
恕我直言,您是对的-如果您同时具有推动触发器,则没有固定的时间表是没有道理的。
您仍然想进行夜间构建(或其他固定时间表)的原因可能是,如果您无法对每个构建都进行全面测试。 例如,您可以决定只对每次触发触发的构建都进行最低限度的测试(或冒烟测试),但是每天(例如晚上)进行一次完整的测试运行。
,据我所知,午夜构建的优点是可以在午夜运行运行/部署时间长的任务。
这些任务在午夜运行后,您可以在第二天直接查看结果。
在这种情况下,您可以为特定任务设置condition,以控制其是否在午夜运行。您可以使用$(Build.Reason)
进行判断。
另一方面,我们建议您设置特定的时间表触发器。
CI触发器会在您将更新推送到指定分支或推送指定标签时使管道运行。仅在代码更改时触发构建。
管道本身和操作环境中的更改不会触发构建。
但是他们有时可以确定项目是否可以成功运行。
在这种情况下,计划触发器可以在特定时间运行构建以确保项目是可执行的。
,我将分享我们的工作,也许会为您提供帮助:
我们有三个构建层,一个用于覆盖您所指出的Push示例之类的构建层,另一个用于一组PowerShell测试,另一个用于计划的包含全部测试的过程,大约需要5个小时。
您可以根据时间和各种测试来描绘每种情况的情况。