Azure DevOps发布流水线IIS应用 先部署文件再切换物理路径方案咨询
IIS零停机切换物理路径发布方案
核心实现逻辑
调整原流水线的任务执行顺序,先完成新版本文件的全量部署,再毫秒级切换IIS虚拟应用的物理路径指向,全程仅路径切换时有极短的几乎可忽略的业务中断。
具体操作步骤
- 第一步:在流水线中提前定义本次发布的物理路径变量,变量名可设为
NewPhysicalPath,值配置为:F:\releases\MyApp\PROD\$(Release.Artifacts.{alias}.BuildNumber)
请将配置中的{alias}替换为你实际的构建构件别名。 - 第二步:将文件部署到新物理路径,可任选以下两种方式之一:
- 直接使用复制文件任务:将构建构件包解压后的所有内容直接复制到
$(NewPhysicalPath)路径下,提前给该路径配置好对应IIS应用池身份的读取、执行权限即可。 - 临时虚拟应用中转:先运行
IIS Web App Manage任务创建一个临时虚拟应用(比如路径设为/MyApp_DeployTemp),物理路径指向$(NewPhysicalPath),再运行IIS Web App Deploy任务将内容部署到/MyApp_DeployTemp,部署完成后可直接删除该临时虚拟应用,也可以保留用于前置验证新版本可用性。
- 直接使用复制文件任务:将构建构件包解压后的所有内容直接复制到
- 第三步:路径切换。运行
IIS Web App Manage任务,选择站点foo.bar.com、虚拟应用路径/MyApp,直接将物理路径参数修改为$(NewPhysicalPath),保存配置即完成切换,该操作耗时通常在100ms以内,用户几乎无感知。
额外优化建议
- 可以保留最近3-5个历史版本的物理路径,出现线上问题时直接执行
IIS Web App Manage任务切回旧路径即可完成秒级回滚。 - 切换路径后可增加10秒左右的健康检查步骤,验证新版本站点响应正常再标记发布成功。
内容的提问来源于stack exchange,提问作者Vince
相关产品推荐
相关产品推荐

