You need to enable JavaScript to run this app. Azure Pipelines 如何配置定时调度实现仅每月第二周运行
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipelines 如何配置定时调度实现仅每月第二周运行

Azure Pipelines 每月第二周定点执行的配置实现

核心能力边界

Azure Pipelines 原生定时调度基于类cron语法实现,本身不支持直接声明“月度第N周”的规则粒度,没有现成参数可以一步配置出“每月第二周执行”的规则,需要结合「宽范围触发+前置校验拦截」的组合逻辑实现,这也是目前社区通用的标准实现方案。

通用实现步骤

第一步:配置定时触发规则

按照你的目标执行时间(比如每月第二周的周二上午8点),选择适配的cron触发范围,两种配置都可以:

  • 方案A:把触发范围缩小到第二周对应的日期窗口
    写cron规则为0 8 8-14 * *,代表每月8日到14日的早上8点触发,不绑定具体星期。这种方式的无效触发次数最少,流水线不会在非目标日被空跑。
  • 方案B:沿用你已经熟悉的每周粒度触发规则
    直接写cron为0 8 * * 2,代表全月所有周二的早上8点触发,这种写法和你之前已经了解的每周调度逻辑完全一致,不需要调整已有的配置习惯。

注意:写cron的时候必须显式指定时区,避免使用默认UTC时区导致时间偏移,示例触发器的完整YAML片段:

schedules:
  - cron: "0 8 8-14 * *"
    displayName: "每月第二周调度校验窗口"
    branches:
      include:
        - main
    always: true
    timezone: "China Standard Time"

第二步:添加前置校验拦截

因为原生cron没法直接精准命中“每月第二周的目标星期几”,需要在流水线最开头加一个校验步骤:只有当当前运行时间匹配目标规则时,才继续执行后续任务,不满足就直接终止本次运行,同时要保证这个校验逻辑不影响手动触发的正常流程:

steps:
# 仅当触发来源为定时调度时,才执行校验拦截
- bash: |
    current_day=$(date +%d)
    current_weekday=$(date +%w)
    # 自定义目标配置:需要每月第二周的周二执行,即日期在8-14号、星期值为2(周二)
    target_weekday=2
    if [ $current_day -ge 8 ] && [ $current_day -le 14 ] && [ $current_weekday -eq $target_weekday ]; then
      echo "匹配每月第二周目标执行时间,继续运行流程"
      exit 0
    else
      echo "非目标执行时间,终止本次定时触发流程"
      exit 0
    fi
  displayName: "校验目标执行时间"
  condition: eq(variables['Build.Reason'], 'Schedule')

逻辑说明:

  • 校验步骤只对定时触发生效,手动触发、代码提交触发、PR触发等其他场景会自动跳过该步骤,不会被拦截
  • 校验的核心判断逻辑是「当日日期落在8-14号区间(即每月第二周的固定时间窗口)」+「当日为你指定的星期几」,双重判断可以100%匹配每月第二周的目标执行时间,不受每月1号星期几不同的影响
  • 如果需要调整成其他月周规则,只需要修改校验步骤里的日期范围、目标星期值即可,比如要每月第三周的周一执行,就把日期范围改成15-21、目标星期值改成1

常见踩坑提醒

  • 不要在cron表达式里同时配置「月内日期范围」和「星期几」两个字段:Azure Pipelines的cron匹配逻辑和传统cron一致,两个字段同时配置时为「或」的匹配关系,会导致非目标日期被错误触发
  • 不要省略时区配置:默认UTC时区会让东八区的执行时间偏移8小时,极易出现跨天、周数计算错误的问题
  • 不要把校验步骤设置成无差别执行:如果没有加condition限定只有定时触发才走校验,手动运行流水线时也会被校验逻辑拦截,影响正常使用

内容的提问来源于stack exchange,提问作者Buuuuuuuuun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.05 15:27:02