Azure DevOps YAML发布如何实现经典发布的ad hoc schedule临时定时调度
方案1:使用管道内置计划运行功能(最适配原ad hoc schedule需求,无需修改现有YAML)
这个是官方原生提供的临时调度能力,和经典发布模式的ad hoc schedule逻辑完全一致:
- 进入对应YAML管道的「运行管道」页面
- 找到
调度选项模块,勾选「在以后的时间安排运行」 - 选择你需要部署生产环境的具体日期、时间,确认要触发的分支、环境参数后提交即可
- 系统会自动在你指定的时间点启动管道运行,到期后按你配置的部署逻辑执行
方案2:YAML内置延迟任务+环境审批(适合需将调度逻辑固化到配置的场景)
如果希望将临时调度的能力内置到YAML脚本中,可以新增延迟控制逻辑:
- 在生产环境部署阶段前插入延迟任务,通过管道运行时传入的变量控制延迟时长,示例配置如下:
stages: # 你原有的测试、预发等部署阶段 - stage: ProductionDeploy condition: eq(variables['enableProdDeploy'], 'true') jobs: - job: WaitScheduledTime steps: - task: Delay@1 inputs: delayForMinutes: ${{ variables.prodDeployDelayMins }} - deployment: RunProdDeploy dependsOn: WaitScheduledTime environment: '生产环境' # 可绑定审批规则,延迟结束后需人工确认再部署 strategy: runOnce: deploy: steps: # 粘贴你原有生产环境的部署步骤
- 需要临时调度时,排队管道时将
enableProdDeploy设为true,填入需要延迟的分钟数即可,到期自动执行部署
方案3:临时Cron触发器(适合需指定精确固定时间点的场景)
可以在YAML中预留临时调度的定时触发器配置,用完即可注释:
trigger: none pr: none # 临时生产部署调度,部署完成后注释/删除即可 schedules: - cron: "0 14 30 11 *" # cron格式:分 时 日 月 周,示例为11月30日14点触发 displayName: 临时生产环境部署 branches: include: - main always: true variables: - name: enableProdDeploy value: 'true'
- 需要调度时修改cron表达式为目标时间,提交代码到对应分支后,系统会自动在指定时间触发部署
- 部署完成后注释掉schedules段即可,不会重复触发
内容的提问来源于stack exchange,提问作者iEnjoyFreeBacon
相关产品推荐
相关产品推荐

