You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps Pipeline如何按每日不同时段运行不同任务

Azure Pipeline 按整点分文件运行配置方法

你现有单作业单任务的结构不需要拆分多作业,最小改动就能实现需求,两种常用实现方式选其一即可:

方式1:双cron调度+任务条件匹配(最不易出错)

这个方式不需要写复杂的时间格式转换、时区计算逻辑,配置直观不容易踩坑:

  1. 先在yml最外层新增schedules调度配置(和jobs节点同级),分别定义两个cron触发规则,给两个规则设置不同的displayName做区分:
schedules:
# 第一个规则:替换成你要运行file1的特定整点,注意cron时区为UTC,请自行换算本地时间
- cron: "0 2 * * *" # 示例为UTC每日2点整,对应北京时间每日10点整
  displayName: RunFile1TargetTime
  branches:
    include:
    - main # 替换成你实际的触发分支
  always: true # 必须配置,否则无代码提交时不会触发调度
# 第二个规则:覆盖除上述特定整点外的所有23个整点
- cron: "0 0-1,3-23 * * *" # 对应上面的示例,排除UTC2点,覆盖其余所有整点
  displayName: RunFile2OtherTime
  branches:
    include:
    - main
  always: true
  1. 调整现有作业下的任务:保留原来运行file1的任务,新增运行file2的任务,两个任务分别加条件判断,只有匹配到对应调度名时才执行:
jobs:
- job: RunPythonScript
  pool:
    vmImage: 'ubuntu-latest' # 替换成你实际用的agent池
  steps:
  # 原有运行file1的任务,新增condition配置
  - task: PythonScript@0
    inputs:
      scriptPath: 'file1.py'
    condition: eq(variables['Build.CronSchedule.DisplayName'], 'RunFile1TargetTime')
    displayName: 'Run file1 on target hour'
  # 新增运行file2的任务
  - task: PythonScript@0
    inputs:
      scriptPath: 'file2.py'
    condition: eq(variables['Build.CronSchedule.DisplayName'], 'RunFile2OtherTime')
    displayName: 'Run file2 on other hours'

方式2:单cron调度+时间判断(配置更简洁)

如果不想写两段cron,可以只配置一个每小时整点触发的规则,直接通过调度触发时间判断该跑哪个文件:

  1. 配置单个每小时整点触发的cron:
schedules:
- cron: "0 * * * *" # 每小时0分整触发
  displayName: HourlyRun
  branches:
    include:
    - main
  always: true
  1. 任务部分直接通过pipeline.startTime内置变量提取小时值做判断,注意这里的小时是UTC时间,要和你目标运行file1的UTC小时值匹配:
jobs:
- job: RunPythonScript
  pool:
    vmImage: 'ubuntu-latest'
  steps:
  - task: PythonScript@0
    inputs:
      scriptPath: 'file1.py'
    # 示例:UTC2点整跑file1,替换成你自己的目标时间即可
    condition: eq(format('{0:HH}', pipeline.startTime), '02')
    displayName: 'Run file1 on target hour'
  - task: PythonScript@0
    inputs:
      scriptPath: 'file2.py'
    condition: ne(format('{0:HH}', pipeline.startTime), '02')
    displayName: 'Run file2 on other hours'

注意事项

  • 所有cron表达式默认使用UTC时区,配置前务必把你需要的本地运行时间换算为UTC时间,避免触发时间不符合预期
  • 调度配置里的always: true必须打开,否则Azure Pipeline默认只会在调度时间点有代码提交时才触发运行,空仓库/无提交时不会按时间跑
  • 两个任务配置了互斥条件,每次调度只会命中其中一个任务,不会重复占用agent资源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:51:20