Azure定时管道总是在运行

4

我已经建立了一个Azure管道,每天运行两次GUI测试。根据文档,它只会在代码有更改时运行,但它总是运行。

以下是我的"cypress-azure-pipelines.xml"中的cron计划表:

schedules:
- cron: "0 10 * * *"
  displayName: Daily 12:00 build (UTC 10:00)
  branches:
    include:
    - master

请注意,文档 (https://learn.microsoft.com/en-us/azure/devops/pipelines/process/scheduled-triggers?view=azure-devops&tabs=yaml#scheduled-triggers) 表示:

always: boolean # 是否始终运行流水线或仅在自上次运行以来有源代码更改时才运行。默认值为 false。

这只是一个错误吗?还是我漏掉了什么?
1个回答

7

Azure定时管道总是运行。

更新2:

我不希望它在每次主分支更新时都运行。它应该在主分支更新并且只在预定时间运行。

但这不是我的当前管道的预期行为吗?当前行为就像我设置了“always:true”一样。

首先,感谢Mick提供了许多详细信息。

现在,我已经找出了问题所在,并且我可以在我的一侧复制此问题。如果我们设置了定时触发器,但构建结果失败了。在这种情况下,即使我们没有任何更改,定时触发器仍将激活。 这是因为最新的构建失败,因此管道未记录最后的提交记录。当到达预定时间时,最后的提交/源代码更改仍然存在。它将触发定时触发器。

因此,这就是为什么即使您没有对代码/yaml进行任何更改,您的管道仍然执行的原因。

如果我成功构建了管道,则定时触发器将按预期工作。

因此,应该说文档不够清晰,应该是:

always: 布尔值 # 是否始终运行管道,或仅在上次成功运行以来有源代码更改时运行。默认为false。

提交此内容给微软,感谢您帮助我们构建更好的Azure DevOps。

希望这可以帮到您。


我更新了之前的评论。我希望当我们的主分支没有更改时,流水线不会运行。 - Mick
1
抱歉,那不是我想要的。我不希望它在主分支更新时每次都运行。它应该在主分支更新并且只在预定时间运行。 - Mick
1
@mick,非常感谢您提供的详细信息。我已经能够重现这个问题,原因是你的构建流程失败了。您可以查看我的update2答案获取一些细节。祝您有美好的一天。 - Leo Liu
它甚至应该显示上一次运行是否已完成并成功。如果上一次运行的时间太长,以至于当下一次计划开始时仍在进行,则会启动下一次计划。 - François
实际上,我已经安排了每小时运行一次的计划。第一次运行成功,并且“always”参数为false(因为我没有在yaml中设置它,这是默认值),但仍然有另一个运行,以及另一个等等,所有都成功了。所以存在问题。 - François
显示剩余6条评论

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