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

如何用azure-pipelines.yml实现多仓库生产部署的文件复制与目录创建

Azure Pipelines实现生产环境部署步骤3-5的方案

前提说明

你已经完成Web App和Web API的自动部署,以下通过Azure Pipelines内置任务替代手动FileZilla操作,实现步骤3-5的自动化:

1. 先构建Mail Console 1/2生成exe文件

Mail Console属于独立仓库,需在管道中拉取代码并完成构建:

# 拉取Mail Console 1仓库的development分支代码
- checkout: git://<你的组织名>/MailConsole1@development
  path: MailConsole1

# 拉取Mail Console 2仓库的development分支代码
- checkout: git://<你的组织名>/MailConsole2@development
  path: MailConsole2

# 构建Mail Console 1,将exe输出到指定目录
- task: VSBuild@1
  inputs:
    solution: 'MailConsole1/**/*.csproj'
    msbuildArgs: '/p:OutputPath=$(Build.ArtifactStagingDirectory)/MailConsole1/bin'
    platform: 'Any CPU'
    configuration: 'Release'

# 构建Mail Console 2,将exe输出到指定目录
- task: VSBuild@1
  inputs:
    solution: 'MailConsole2/**/*.csproj'
    msbuildArgs: '/p:OutputPath=$(Build.ArtifactStagingDirectory)/MailConsole2/bin'
    platform: 'Any CPU'
    configuration: 'Release'

2. 步骤3:同步Web App/Web API发布文件到生产服务器

如果是自托管IIS服务器,用WinRM Copy Files任务完成文件同步:

# 同步Web App发布文件到生产服务目录
- task: WinRM-CopyFiles@1
  inputs:
    authenticationMethod: 'basic'
    machines: '<生产服务器IP/域名>'
    username: '<服务器登录用户名>'
    password: '<服务器登录密码/密钥>'
    sourceFolder: '$(Build.ArtifactStagingDirectory)/WebApp' # 替换为Web App实际发布目录
    destinationFolder: '<Web App生产服务目录,如C:\inetpub\wwwroot\WebApp>'
    cleanTargetFolder: true # 可选:清空目标目录后再复制

# 同步Web API发布文件到生产服务目录
- task: WinRM-CopyFiles@1
  inputs:
    authenticationMethod: 'basic'
    machines: '<生产服务器IP/域名>'
    username: '<服务器登录用户名>'
    password: '<服务器登录密码/密钥>'
    sourceFolder: '$(Build.ArtifactStagingDirectory)/WebAPI' # 替换为Web API实际发布目录
    destinationFolder: '<Web API生产服务目录,如C:\inetpub\wwwroot\WebAPI>'
    cleanTargetFolder: true

如果是Azure App Service,此步骤可跳过——App Service部署任务已自动完成文件同步。

3. 步骤4:在Web API的wwwroot目录创建Tools文件夹

通过WinRM执行PowerShell命令创建目录:

- task: WinRM-Command@1
  inputs:
    authenticationMethod: 'basic'
    machines: '<生产服务器IP/域名>'
    username: '<服务器登录用户名>'
    password: '<服务器登录密码/密钥>'
    command: 'New-Item -Path "<Web API的wwwroot目录>\Tools" -ItemType Directory -Force'
    # 示例路径:C:\inetpub\wwwroot\WebAPI\wwwroot\Tools

若为Linux服务器,将命令替换为Bash:mkdir -p /var/www/WebAPI/wwwroot/Tools

4. 步骤5:复制Mail Console的exe到Tools文件夹

继续用WinRM Copy Files任务完成exe文件传输:

# 复制Mail Console 1的exe文件
- task: WinRM-CopyFiles@1
  inputs:
    authenticationMethod: 'basic'
    machines: '<生产服务器IP/域名>'
    username: '<服务器登录用户名>'
    password: '<服务器登录密码/密钥>'
    sourceFolder: '$(Build.ArtifactStagingDirectory)/MailConsole1/bin'
    contents: '*.exe' # 仅复制exe文件
    destinationFolder: '<Web API的wwwroot目录>\Tools'

# 复制Mail Console 2的exe文件
- task: WinRM-CopyFiles@1
  inputs:
    authenticationMethod: 'basic'
    machines: '<生产服务器IP/域名>'
    username: '<服务器登录用户名>'
    password: '<服务器登录密码/密钥>'
    sourceFolder: '$(Build.ArtifactStagingDirectory)/MailConsole2/bin'
    contents: '*.exe'
    destinationFolder: '<Web API的wwwroot目录>\Tools'

若为Linux服务器,改用SSH Copy Files任务完成传输。

注意事项

  • 自托管服务器需开启WinRM/SSH服务,确保Azure Pipelines代理能访问对应端口
  • 敏感信息(如密码、密钥)不要硬编码,用Azure Pipelines变量组或密钥保管库存储

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 21:42:40