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

Azure YAML Pipelines如何实现部署完成X时间后停止deployment slot?

部署完成后定时停止指定Deployment Slot的最优实现方案

优先推荐无额外资源依赖、操作门槛最低的CI/CD流水线嵌入方案,不需要额外部署服务,复用现有部署流程的权限即可实现:

方案1:CI/CD流水线内置延迟+停止命令(最易操作,零额外成本)

直接在现有部署流水线的末尾追加2个任务即可完成配置:

  • 部署任务执行成功后,添加固定时长延迟任务,时长设为你需要的等待时长X。不同流水线的实现方式:
    • GitHub Actions:直接用actions: delay官方动作配置时长
    • GitLab CI/Jenkins:执行shell命令sleep $((X*60))(X单位为分钟)
    • Azure DevOps:直接添加可视化的「延迟代理作业」任务,可选单位为秒/分钟/小时
  • 延迟结束后调用云平台原生CLI命令停止目标部署槽,以Azure App Service为例,命令为:
    az webapp stop --name <你的应用名> --resource-group <资源组名> --slot <目标部署槽名>
    
    命令直接复用流水线预先配置的云服务账号权限,不需要额外处理密钥等敏感信息。

小优化:如果担心延迟任务占用部署流水线的运行配额,可以把停止逻辑拆成独立的可触发流水线,部署完成后给云平台定时规则传触发时间参数,到点触发独立流水线执行停止命令即可,不会占用部署流水线的运行资源。

方案2:云原生定时扫描(无需修改现有CI/CD流程)

如果不想改动现有部署流程,可以用云平台自带的无服务能力实现自动停止:

  • 先给需要自动停止的部署槽添加自定义标签,比如auto-stop-minutes: X,标记等待停止的时长
  • 用云平台无服务器函数(比如Azure Function)配置定时触发规则,每10分钟执行一次扫描逻辑:拉取所有带指定标签的部署槽,判断其最后部署时间是否已经超过标签标记的X时长,符合条件就调用停止接口。单次执行耗时通常不超过5秒,资源消耗几乎可以忽略。

临时单次使用方案

如果只是临时测试需要单次定时停止,不需要配置自动化规则,可以直接在本地终端执行后台命令:
nohup bash -c "sleep $((X*60)) && az webapp stop --name <应用名> --resource-group <资源组名> --slot <部署槽名>" &
只要本地设备不关机、保持云CLI登录状态,到时间就会自动执行停止操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:48:01