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

Azure DevOps中CopyFiles任务无法找到BinariesDirectory内的文件

Azure DevOps CopyFiles任务无法找到AAB文件的排查与解决

问题场景

我有一条构建Android Bundle的Azure DevOps流水线,在应用构建任务后配置了以下两个任务:

- task: Bash@3
  inputs:
    targetType: 'inline'
    script: 'ls'
    workingDirectory: '$(Build.BinariesDirectory)'
  
- task: CopyFiles@2
  inputs:
    Contents: '$(Build.BinariesDirectory)/*.aab'
    TargetFolder: '$(Build.ArtifactStagingDirectory)'
    OverWrite: true
    flattenFolders: true

第一个Bash任务日志显示$(Build.BinariesDirectory)目录下存在MyApp.aab和MyApp-Signed.aab文件,但第二个CopyFiles任务始终找不到任何文件,复制计数为0。尝试过硬编码从日志中获取的实际路径/Users/runner/work/1/b/MyApp-Signed.aab,问题依然存在。

核心原因

CopyFiles@2任务的Contents参数不适合直接写绝对路径:

  • 当你在Contents中使用绝对路径时,任务的路径匹配逻辑会出现异常,尤其是在macOS runner环境下,绝对路径的解析规则与预期不符。
  • 若未显式指定SourceFolder,任务默认从$(System.DefaultWorkingDirectory)开始搜索,此时$(Build.BinariesDirectory)/*.aab会被当作相对路径,自然无法定位到目标文件。

解决方案

修改CopyFiles任务配置,采用指定SourceFolder+相对匹配规则的标准写法:

- task: CopyFiles@2
  inputs:
    SourceFolder: '$(Build.BinariesDirectory)' # 明确源目录
    Contents: '*.aab' # 匹配源目录下所有aab文件
    TargetFolder: '$(Build.ArtifactStagingDirectory)'
    OverWrite: true
    flattenFolders: true

额外排查步骤

如果问题仍存在,可在CopyFiles任务前添加Bash任务,打印所有aab文件的绝对路径,确认文件位置:

find $(Build.BinariesDirectory) -name "*.aab" -type f

内容的提问来源于stack exchange,提问作者Delphi.Boy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 08:15:04