我有一个小测试项目,我需要每两周编译和构建一次,特别是在星期六。
根据 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% 清楚,请随时询问更多详细信息。
非常感谢您为我提供的任何帮助。
我相信你会想要以下 cron 作业
cron: 0 8 8-14,22-28 * 6
其背后的逻辑是,该月的第二个星期六必须位于第 8-14 天之间,同样,第四个星期六必须位于 22-28 天之间。您可以通过单击管道上的 3 个点并检查计划运行来测试这一点。问题是它只显示下周内的计划运行,因此您必须等待一段时间才能确认它是否有效。
作为检查调度的快速测试,如果您使用上述内容,但将其修改为在星期三运行(因为我们已经过了本月的第四个星期六),您可以看到它将在本周的 28 号触发一次
两年后我要感谢@DavidCox88。 Azure Pipeline DevOps 使用的逻辑与您在 crontab.guru 上测试的逻辑不同
如上面的cron
0 8 8-14,22-28 * 6
将被触发:
所以它会作为 OR 运算符而不是 AND - 但对于 AzureDevops Pipeline 来说它会按预期工作!再次感谢。
(无法将此添加为评论)