如何通过Cron配置Azure Pipeline:排除隔周周四、周五每日运行
Azure Pipeline Cron 配置:每日运行但排除隔周的周四、周五
你的当前配置0 19 * * 1-5仅在周一至周五19点执行,既不满足“每日运行”的要求,也无法实现隔周排除周四、周五的逻辑。以下是两种可行的解决方案:
方案1:单Schedule + Job条件控制(推荐)
设置一个每日运行的Cron规则,然后通过Job条件判断是否跳过隔周的周四、周五执行。
修改后的Schedule配置
schedules: - cron: 0 19 * * * displayName: daily-evening-deployment branches: include: - develop always: false
添加Job执行条件
在流水线的Job中加入条件判断,排除指定周数的周四、周五。示例中以偶数周排除为例,若需排除奇数周,将eq(mod(int(variables['System.WeekOfYear']), 2), 0)改为eq(mod(int(variables['System.WeekOfYear']), 2), 1)即可:
jobs: - job: DeploymentJob condition: | not( and( or(eq(variables['System.DayOfWeek'], 'Thursday'), eq(variables['System.DayOfWeek'], 'Friday')), eq(mod(int(variables['System.WeekOfYear']), 2), 0) ) ) steps: # 此处添加你的部署步骤
说明:System.WeekOfYear基于UTC时间计算,若需按本地时间判断周数,可通过PowerShell任务转换时间后再做判断。
方案2:拆分双Schedule(无额外条件判断)
将执行规则拆分为两个Schedule,分别覆盖非周四/周五的所有日期,以及非排除周的周四/周五:
- 覆盖周一至周三、周六至周日的每日执行:
schedules: - cron: 0 19 * * 0-3,6 displayName: non-thu-fri-daily-deployment branches: include: - develop always: false
- 针对周四/周五的执行需结合周数判断,由于Azure Cron不直接支持周数过滤,仍需在对应的Job中添加方案1中的条件逻辑,因此方案1更简洁高效。
内容的提问来源于stack exchange,提问作者Yar
相关产品推荐
相关产品推荐

