Azure yaml 每 14 天在星期六触发一次管道

问题描述 投票:0回答:2

我有一个小测试项目,我需要每两周编译和构建一次,特别是在星期六。

根据 Microsoft Azure 文档,我可以使用

schedules
并设置我的 cron,所以我做了如下操作:

trigger : none
schedules:
  - cron: '* 8 1/14 * 6'
    displayName: Trigger every 2nd and 4th Saturday
    branches:
      include:
        - test
    always: true

但这并没有像我预期的那样工作,因为在 Azure devOps 中我看不到触发器。

基本上我想要的是每个月,该管道需要在该月的第二个星期六和第四个星期六触发(每两周一个星期六)。

据我从文档中了解到,如果不是每周,则很难设置日期,因此请尝试设置时间。为了测试这一点,我使用了 crontab guru。基本上我计算了 14 天有多少小时,并将 cron 设置如下:

trigger : none
schedules:
  - cron: '* 8/312 * * *'
    displayName: Trigger every 2nd and 4th Saturday
    branches:
      include:
        - test
    always: true

但这出于某种原因表明下一次触发将是明天早上 8 点。

我现在很困惑。

有人对我如何保证触发器总是在每两周的星期六有任何建议吗?

如果我的问题不是 100% 清楚,请随时询问更多详细信息。

非常感谢您为我提供的任何帮助。

azure azure-devops cron azure-pipelines
2个回答
3
投票

我相信你会想要以下 cron 作业

cron: 0 8 8-14,22-28  * 6

其背后的逻辑是,该月的第二个星期六必须位于第 8-14 天之间,同样,第四个星期六必须位于 22-28 天之间。您可以通过单击管道上的 3 个点并检查计划运行来测试这一点。问题是它只显示下周内的计划运行,因此您必须等待一段时间才能确认它是否有效。

作为检查调度的快速测试,如果您使用上述内容,但将其修改为在星期三运行(因为我们已经过了本月的第四个星期六),您可以看到它将在本周的 28 号触发一次


0
投票

两年后我要感谢@DavidCox88。 Azure Pipeline DevOps 使用的逻辑与您在 crontab.guru 上测试的逻辑不同

如上面的cron

0 8 8-14,22-28  * 6

将被触发:

  • 于2024-06-29 08:00:00
  • 然后在 2024-07-06 08:00:00
  • 然后在 2024-07-08 08:00:00
  • 然后在 2024-07-09 08:00:00
  • 然后在2024-07-10 08:00:00

所以它会作为 OR 运算符而不是 AND - 但对于 AzureDevops Pipeline 来说它会按预期工作!再次感谢。

(无法将此添加为评论)

© www.soinside.com 2019 - 2024. All rights reserved.