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

Azure DevOps中PublishPipelineArtifact任务发布所有Zip文件的正确目标路径模式是什么?

解决Azure Pipeline PublishPipelineArtifact任务发布指定Zip文件的路径问题

你遇到的报错是因为路径解析时出现了格式问题——当直接使用$(Build.ArtifactStagingDirectory)/**这类模式时,代理会错误拼接路径(比如变成d:\a\1\a**,缺少了路径分隔符和正确的通配符匹配规则)。针对你的场景,有两种可靠的解决方案:

方案1:使用@0版本任务的正确通配符路径(带引号)

PublishPipelineArtifact@0支持通配符,但需要将路径用引号包裹,确保变量和通配符被正确解析。你需要明确指定匹配所有Zip文件的模式,配置如下:

- task: PublishPipelineArtifact@0
  displayName: 'Publish pipeline artifacts'
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)/**/*.zip'
    artifactName: 'drop'

这里的**/*.zip会递归匹配暂存目录下所有子目录(包括根目录)中的Zip文件,完全覆盖你提到的两个归档文件。引号的作用是避免代理将变量和通配符错误拼接成无效路径。

方案2:升级到@1版本任务(更推荐)

PublishPipelineArtifact@1版本的参数设计更清晰,支持单独指定contents参数来筛选文件,配置可读性更强,也更不容易出错:

- task: PublishPipelineArtifact@1
  displayName: 'Publish pipeline artifacts'
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)'
    artifact: 'drop'
    publishLocation: 'Container'
    contents: '**/*.zip'

这个配置中,targetPath指定要扫描的根目录,contents定义要包含的文件模式,逻辑更直观,也能准确发布你需要的所有Zip文件。

为什么之前的模式无效?

  • $(Build.ArtifactStagingDirectory)/**:这个模式会尝试匹配目录本身,但任务需要明确的文件或有效路径,且缺少引号导致解析错误。
  • $(Build.ArtifactStagingDirectory)/*.zip:只会匹配暂存目录根目录下的Zip文件(虽然你的两个文件都在根目录,但如果后续有子目录的Zip文件就会遗漏),且同样可能因为缺少引号导致解析问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:37:29