始终:Azure DevOps 管道中的真实行为问题

always: true behaviour issue in Azure DevOps pipelines

我想要实现的目标:运行 管道仅在 cron 计时器上并且 运行 它在计时器上总是忽略先前的 运行 状态

trigger: none # No CI build

pr: none # Not for pull requests

schedules:
- cron: "0 0 * * *"
  displayName: Daily midnight build
  branches:
    include:
    - integration-tests
  always: true

我目前拥有的:

  1. 失败的管道按预期工作

  1. 成功的管道在第一次成功后停止工作 运行。它甚至不会在手动触发时启动 运行 失败。

  1. 所有管道都有正确的“预定 运行s”选项卡。

  1. 每个管道都没有在 UI
  2. 上配置任何 trigger/schedule

我做错了什么?

您可以查看此常见问题解答:

I see the planned run in the Scheduled runs panel. However, it does not run at that time. Why?

  • 计划的 运行s 面板显示所有可能的计划。但是,除非您对代码进行了真正的更新,否则它实际上可能不是 运行。要强制计划始终 运行,请确保您已在 YAML 管道中设置始终 属性,或在经典管道中选中始终 运行 的选项。

还有这个My YAML schedules were working fine. But, they stopped working now. How do I debug this?

根据描述,您可以对 YAML 文件进行一些细微的更改,然后将更新推送到您的存储库。

您也可以尝试创建一个新的 YAML 构建并检查结果。

哎呀,看来找到原因了。计划运行选项卡让我有点困惑。

所以,根据描述,我是否应该将 cron timer 放入 master 中才能使此选项卡工作?

在这里你可以看到它提到了默认分支(对我来说是master)。我必须将确切的 yml 放入 master 中才能使此选项卡显示未来的计划运行。但是 master 分支中的 always: true 似乎无关紧要,它应该应用于您 运行 管道的分支(对我来说是集成测试)。看起来在尝试修复东西的某个时候我已经将 always: true 放入了 master 的 pipeline.yml,但没有放入集成测试的

当我为两个 yml 添加选项时,一切都按预期开始工作。

但是,当我查看具有时间表约束的管道时,我变得更加困惑。没有schedule的时候说的是default branch,现在显示refs/heads/integration-tests??它从哪里获取 cron?