在Azure DevOps单仓库中部署REST API与SOAP服务的方法咨询
分项目构建与部署Azure Web App配置方案
一、修改构建管道(YAML)
将原有的单步构建拆分为针对两个项目的独立构建,分别生成各自的部署包并发布为不同的管道工件:
trigger: - develop pool: vmImage: 'windows-latest' variables: buildPlatform: 'Any CPU' buildConfiguration: 'Release' # 定义两个项目的路径变量,方便后续维护 apiProject: '**/API.csproj' soapProject: '**/SOAP.csproj' steps: # 安装NuGet工具 - task: NuGetToolInstaller@1 # 还原整个解决方案的NuGet依赖包 - task: NuGetCommand@2 inputs: restoreSolution: '**/*.sln' # 构建REST API项目并生成独立部署包 - task: VSBuild@1 inputs: solution: '$(apiProject)' msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\API\API.zip" /p:DeployIisAppPath="Default Web Site"' platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' # 构建SOAP服务项目并生成独立部署包 - task: VSBuild@1 inputs: solution: '$(soapProject)' msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\SOAP\SOAP.zip" /p:DeployIisAppPath="Default Web Site"' platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' # 运行解决方案单元测试 - task: VSTest@2 inputs: platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' # 发布REST API的管道工件 - task: PublishPipelineArtifact@1 inputs: targetPath: '$(build.artifactStagingDirectory)\API' artifact: 'API-Artifact' publishLocation: 'Container' # 发布SOAP服务的管道工件 - task: PublishPipelineArtifact@1 inputs: targetPath: '$(build.artifactStagingDirectory)\SOAP' artifact: 'SOAP-Artifact' publishLocation: 'Container'
关键调整说明:
- 新增项目路径变量,简化后续配置修改
- 拆分
VSBuild任务,为两个项目指定独立输出目录,避免部署包覆盖 - 用两个
PublishPipelineArtifact任务分别发布工件,确保两个项目的部署包独立存储
二、配置发布管道
- 创建新的发布管道,选择空作业模板
- 添加两个部署阶段(支持并行或串行执行),分别命名为
Deploy REST API和Deploy SOAP Service
单个阶段的任务配置示例:
阶段1:部署REST API到对应Web App
- 添加下载管道工件任务:
- 工件名称选择
API-Artifact - 下载路径设置为
$(System.ArtifactsDirectory)/API
- 工件名称选择
- 添加Azure Web App任务:
- 选择目标Azure订阅和对应的Web App名称
- 包或文件夹路径填写
$(System.ArtifactsDirectory)/API/API.zip
阶段2:部署SOAP服务到对应Web App
- 添加下载管道工件任务:
- 工件名称选择
SOAP-Artifact - 下载路径设置为
$(System.ArtifactsDirectory)/SOAP
- 工件名称选择
- 添加Azure Web App任务:
- 选择目标Azure订阅和对应的Web App名称
- 包或文件夹路径填写
$(System.ArtifactsDirectory)/SOAP/SOAP.zip
若需要串行执行部署,可在阶段设置中取消并行选项,调整执行顺序即可。
内容的提问来源于stack exchange,提问作者Roelant M
相关产品推荐
相关产品推荐

