Azure DevOps构建流水线按计划不可靠触发

10

我在Azure DevOps中运行构建流程,用于每日更新Dockerfile并使用更新的依赖项重新构建容器映像。目的是为项目拥有最新版本的依赖项,并在容器注册表中发布新的构件。

在Azure DevOps中,我有三个被链接的构建流程。第一个流程使用计划触发器每天触发。下两个流程则使用CI触发器和文件路径过滤器触发。这一切都很好,大部分时间都能正常工作。

我的问题是有时计划不会触发。这种情况会在流程正常运行数天后发生(大约1到15天)。复选框"仅当源或流程发生更改时才安排构建"未选中,因此没有提交不应该是问题的原因。

奇怪的是,在这种问题情况下,当我登录Azure DevOps门户网站时,计划事件立即触发,我可以看到最新的每日构建开始运行。我不需要手动启动它,它就会自动启动,就像按计划时间一样,但是在我登录时。

此项目正在使用Azure DevOps的免费版本。该项目和流程在Azure DevOps为VSTS时创建,同样的触发问题也存在于VSTS中。有时我会用完免费配额,然后我会收到代理无法启动的错误。当计划触发器未运行时,情况并非如此。

什么原因会导致按计划触发问题?你们有没有遇到过这个问题?我该如何调试或解决此问题,并使构建可靠运行?我找不到关于触发事件的任何调试信息,只能在触发后从代理日志中获取。我还没有重新创建流水线以查明是否在这种情况下“重新启动”有帮助。如果没有更好的答案,那就是接下来要做的。

1个回答

10

更新于 2019 年 07 月 11 日:
我们已经更新了此逻辑,为计划生成提供了一个完整的月份,以便在没有任何用户活动的情况下继续运行。 夜间构建需要每天有人签到。


从文档中可以得知:
我的构建未运行。发生了什么?
您的 Azure DevOps 组织在最后一个用户注销后五分钟进入休眠状态。之后,每个构建管道将再次运行一次。例如,在组织休眠期间:

  • Azure DevOps 组织中代码的夜间构建只会运行一次,直到有人再次登录。
  • 外部 Git 存储库的 CI 构建将停止运行,直到有人再次登录。

https://learn.microsoft.com/en-us/azure/devops/pipelines/build/triggers?view=vsts&tabs=yaml


1
感谢Marc指出这份文档。这绝对可以是原因。我以前没有找到过这个“特性”的文档。时间不完全符合文档,因为在登录后,管道停止运行需要多天时间。使用此帐户时,我不经常进行交互式登录,并且这是组织中唯一的帐户。另一个用于调试情况的计划管道每天成功运行,即使原始管道没有触发,这也很奇怪。 - Veikko
2
这真是个让人头疼的问题,我不知道为什么有人会认为这是个好主意 - 你知道它是否适用于预定发布和构建吗? - Cocowalla
@Cocowalla 抱歉,我不知道。但我想这也适用于定期发布。 - Eichi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接