如何通过Publish Build Artifact Task在Azure Pipeline中分离发布ManagerWeb与WebAPI
如何在Azure Pipeline中分别发布WebAPI和ManagerWeb的独立制品
没问题,这其实很容易实现——你只需要在Pipeline里添加两个Publish Build Artifact任务,分别针对两组文件设置精准的通配符匹配规则即可。下面是具体的操作步骤和示例:
核心思路
利用Azure Pipeline支持的通配符匹配,通过*(匹配任意长度的字符)来筛选包含特定关键词的文件,把WebAPI相关文件和ManagerWeb相关文件分别打包成两个独立的制品。
步骤1:添加第一个Publish任务(WebAPI制品)
- 在Pipeline的Visual Studio Build任务之后,添加一个
Publish Build Artifact任务 - 配置以下关键参数:
- 任务显示名称:可以设为
Publish WebAPI Artifacts(方便识别) - 要发布的路径:填入
$(Build.ArtifactStagingDirectory)/*WebAPI*这个通配符会匹配
Build.ArtifactStagingDirectory目录下所有文件名包含WebAPI的文件,正好对应你列出的Something.Manager.WebAPI.*系列文件 - 制品名称:填入
WebAPI-Artifacts(自定义名称,方便后续下载/部署时识别) - 发布位置:保持默认的
Container(发布到Azure Pipeline的制品库)
- 任务显示名称:可以设为
步骤2:添加第二个Publish任务(ManagerWeb制品)
重复上述步骤,只需要修改两个关键参数:
- 任务显示名称:设为
Publish ManagerWeb Artifacts - 要发布的路径:填入
$(Build.ArtifactStagingDirectory)/*ManagerWeb*这个规则会匹配所有文件名包含
ManagerWeb的文件,对应Something.ManagerWeb.*系列文件 - 制品名称:填入
ManagerWeb-Artifacts
YAML Pipeline示例(如果用代码编辑Pipeline)
如果你的Pipeline是用YAML编写的,直接添加以下两段任务代码即可:
# 发布WebAPI相关制品 - task: PublishBuildArtifacts@1 displayName: 'Publish WebAPI Artifacts' inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/*WebAPI*' ArtifactName: 'WebAPI-Artifacts' publishLocation: 'Container' # 发布ManagerWeb相关制品 - task: PublishBuildArtifacts@1 displayName: 'Publish ManagerWeb Artifacts' inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/*ManagerWeb*' ArtifactName: 'ManagerWeb-Artifacts' publishLocation: 'Container'
额外验证小技巧
如果你担心通配符匹配不准确,可以在Publish任务前添加一个PowerShell任务,列出Build.ArtifactStagingDirectory里的所有文件,确认筛选逻辑:
- task: PowerShell@2 displayName: 'Verify Artifact Files' inputs: targetType: 'inline' script: | Write-Host "Files in Artifact Staging Directory:" Get-ChildItem $(Build.ArtifactStagingDirectory)
这样执行Pipeline后,你就能在Azure DevOps的制品页面看到两个独立的制品包,分别包含对应项目的所有部署文件啦。
内容的提问来源于stack exchange,提问作者Eddie
相关产品推荐
相关产品推荐

