Azure DevOps 定时流水线未触发。

3
我有以下配置:Azure DevOps Server版本为Dev18.M170.8
trigger: none # No CI build
pr: none # Not for pull requests

schedules:
- cron: "* * * * *"
  displayName: Every minute build
  branches:
    include:
    - master
  always: true
  
jobs:
- job: RunMyCustomTask
  pool: 'DedicatedPoolWith1Agent'
  condition: always()
  steps:
  - task: mycustomtask@0'

该流水线是为一个单独的代码库创建的,并有一个专用代理池。根据配置,它应该正常运行,通常每分钟运行一次。这对我非常关键。我可以更改为每2分钟或5分钟,但无论如何,它必须精确地按正确间隔安排。

现在,我的问题是,流水线被安排在每分钟运行一次,但是,由于没有任何原因,它不再被安排了。我已经检查了一整天,发现最长时间未安排为6分钟。 我不明白为什么会发生这种情况。有任何想法或建议吗?我需要保证时间表。触发器和pr:none没有区别,有或没有都一样。

scheduled pipeline not executing 6 minutes

Agent execution logs


你是否有可能没有足够的代理?你能否进入代理详情并检查“等待时间”? - Krzysztof Madej
@KrzysztofMadej 正如我在问题中提到的,我有一个专用的池和一个专用的单个代理,只为此管道服务。没有其他管道使用这个代理或池。理论上,代理应该每分钟获得一个新的计划管道运行并执行它,持续时间最长为1分钟,通常在1分钟内开始和结束。无论如何,这并不能解释为什么Azure DevOps Server不会安排6分钟的管道。如果存在代理问题,我将拥有堆积的计划运行,而不是间隔。 - XMight
当您单击计划运行按钮时,您会看到什么? - Krzysztof Madej
@KrzysztofMadej 我添加了代理作业的屏幕截图,并突出显示了存在问题的时刻。 - XMight
使用MS托管代理时是否相同?您能否检查一下? - Krzysztof Madej
关于预定运行按钮,它正确显示了接下来的10个计划。但是当它们按计划执行时,它们并没有被执行(有时很明显)。关于MS Hosted,是的,我会这样做。问题在于我不能总是使用MS Hosted代理,因为需要使用OnPremises软件。 - XMight
1个回答

0
我不确定Azure DevOps管道是在短时间内运行频繁的短暂过程的合适场所。
文档甚至指出每周有大约1000个作业的限制: https://learn.microsoft.com/en-us/azure/devops/pipelines/process/scheduled-triggers?view=azure-devops&tabs=yaml#limits-on-the-number-of-scheduled-runs “有关如何定期运行管道,存在某些限制。这些限制已经实施,以防止滥用Azure Pipelines资源 - 特别是Microsoft托管代理。此限制约为每个管道每周1000次运行。”
基于您的陈述,“必须精确地按照正确的间隔进行安排”,我会重新考虑管道是否是此工作的正确工具。计划管道没有实时保证。

2
我了解Microsoft Hosted,但我正在使用自己的资源在On-Premises环境中运行。您的答案如何与我的问题相关? - XMight
2
此外,我明确表示我可以更改频率,但需要保证时间/间隔。我不一定需要每分钟执行一次的cron计划管道运行。 - XMight
1
@XMight 无论是托管代理还是私有代理,都存在限制。而且正如我所说,没有实时保证。它会尽力在预定时间运行流水线,但由于各种原因(服务不可用、代理不可用等),它可能不会立即在那个时间运行。 - Daniel Mann
@DanielMann所说的有道理。你可以创建另一个问题,如果你提供更多细节,关于你需要在计划时间运行什么,也许我们会为你找到一个合适的方法。 - Krzysztof Madej

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