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
相关产品推荐
相关产品推荐

