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

如何通过Azure DevOps代理服务器部署IIS至无代理本地服务器?

单代理服务器跨局域网部署IIS应用的实现方案

方案可行性

完全可行。核心逻辑是利用局域网内的单台Azure DevOps代理服务器作为操作跳板,通过远程管理协议(WinRM/Web Deploy)连接目标IIS服务器,无需在目标服务器安装Agent即可完成部署。

具体配置步骤

1. 代理服务器前置准备

  • 确保代理服务器能正常访问Azure DevOps云端,且已完成Agent注册配置
  • 配置代理服务器与所有目标IIS服务器的连通性:
    • 开放WinRM(5985/5986端口)或Web Deploy(8172端口)
    • 确保代理服务器运行账户拥有目标服务器的管理员/部署权限
    • 提前测试连通性:执行Test-WSMan 目标服务器IP验证WinRM,或访问https://目标服务器IP:8172/msdeploy.axd验证Web Deploy

2. 流水线结构设计

流水线分为构建阶段和部署阶段,两个阶段均指定在代理服务器上执行:

  • 构建阶段:拉取源码、编译生成部署包
  • 部署阶段:通过远程命令将部署包推送至目标服务器并完成IIS配置

3. 构建阶段配置

  • Get Sources:配置仓库地址,拉取源码到代理服务器本地
  • Build任务:使用DotNet Build/MSBuild任务编译项目,将生成的部署包(如Web Deploy包、Zip压缩包)输出到$(Build.ArtifactStagingDirectory)目录

4. 部署阶段配置(两种可选方案)

方案一:PowerShell远程脚本部署

通过PowerShell建立远程会话,完成包传输与IIS配置:

  1. 添加PowerShell任务,选择"Inline"模式,输入以下脚本(替换占位符):
# 加载Azure DevOps存储的目标服务器凭据
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList "$(TargetServerUser)", (ConvertTo-SecureString "$(TargetServerPassword)" -AsPlainText -Force)

# 建立WinRM远程会话
$session = New-PSSession -ComputerName "$(TargetServerIP)" -Credential $cred

# 复制部署包到目标服务器临时目录
Copy-Item -Path "$(Build.ArtifactStagingDirectory)\WebApp.zip" -Destination "C:\Temp\WebApp.zip" -ToSession $session

# 远程执行解压、部署与应用池重启
Invoke-Command -Session $session -ScriptBlock {
    Expand-Archive -Path "C:\Temp\WebApp.zip" -DestinationPath "C:\inetpub\wwwroot\MyWebApp" -Force
    appcmd recycle apppool /apppool.name:"MyAppPool"
}

# 关闭远程会话
Remove-PSSession $session
  1. 在Azure DevOps流水线变量中添加TargetServerIP、TargetServerUser、TargetServerPassword(标记为"保密")

方案二:Web Deploy远程部署

利用IIS Deploy任务的远程连接功能:

  1. 添加IIS Web App Deploy任务
  2. 在"Connection Details"区域选择Remote machine选项
  3. 填入目标服务器的Web Deploy端点:https://目标服务器IP:8172/msdeploy.axd
  4. 配置目标服务器凭据(可通过服务连接存储)
  5. 指定网站名称、部署包路径($(Build.ArtifactStagingDirectory)\WebApp.zip)及应用池名称

对原有尝试的说明

  • 部署组作业:部署组要求目标服务器必须安装Agent,因此不符合你的需求,无需考虑
  • IIS Deploy任务:默认显示本地部署选项,需手动切换到Remote machine模式才能实现跨服务器部署

实操注意事项

  • 避免明文存储凭据,一律使用Azure DevOps的保密变量或服务连接
  • 批量部署多台服务器时,可通过流水线参数或循环脚本遍历目标服务器列表
  • 部署前建议添加远程连通性测试任务,提前排查网络问题

内容的提问来源于stack exchange,提问作者Tomáš Kusák

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:07:50