Azure DevOps Pipeline如何按每日不同时段运行不同任务
Azure Pipeline 按整点分文件运行配置方法
你现有单作业单任务的结构不需要拆分多作业,最小改动就能实现需求,两种常用实现方式选其一即可:
方式1:双cron调度+任务条件匹配(最不易出错)
这个方式不需要写复杂的时间格式转换、时区计算逻辑,配置直观不容易踩坑:
- 先在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
- 调整现有作业下的任务:保留原来运行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,可以只配置一个每小时整点触发的规则,直接通过调度触发时间判断该跑哪个文件:
- 配置单个每小时整点触发的cron:
schedules: - cron: "0 * * * *" # 每小时0分整触发 displayName: HourlyRun branches: include: - main always: true
- 任务部分直接通过
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
相关产品推荐
相关产品推荐

