我希望我的 Azure YAML 管道在每月最后一个星期日的凌晨 4 点运行。目前我的管道中有以下 cronjob/schedule:
但是这个每周日凌晨 4 点运行,这太频繁了。
我已经尝试了几个 cronjobs,但它们似乎都没有达到我想要的效果:
我使用 Crontab.guru 来检查这些作业何时运行。例如,0 4 25-31 1-12/2 Sun,生成以下文本:
对我来说,听起来它会根据两个条件运行:
这可能吗?或者是否需要任何脚本来在 Azure YAML 管道中实现此目的?
谢谢!
Cron 语法不直接支持“该月的最后一个星期日”。您可以在管道的开头添加一个脚本来检查今天是否是该月的最后一个星期日。如果没有,它就会提前退出管道。这是一个例子供您参考:
trigger:
- none
schedules:
- cron: "0 4 * * Sun"
displayName: Monthly Pipeline Run
branches:
include:
- main
always: true
pool:
vmImage: ubuntu-latest
steps:
- script: |
# Get the last day of the month
last_day=$(date -d "$(date +'%Y%m01') +1 month -1 day" "+%d")
# Get today's date
today=$(date +'%d')
# Check if today is the last Sunday of the month
if [ $((10#$today + 7)) -gt $((10#$last_day)) ]; then
echo "Today is the last Sunday of the month. Continue with the pipeline."
exit 0
else
echo "Today is not the last Sunday of the month. Stop the pipeline."
exit 1
fi
displayName: 'Check if today is the last Sunday of the month'
管道将在每周日凌晨 4:00 UTC 触发,但您定义的步骤将仅在每月的最后一个周日运行。