Azure DevOps CI流水线报错:指定目录不存在,求技术支持
错误ENOENT: no such file or directory, stat 'D:\a\1\b\2614'的核心原因是ArchiveFiles@2任务指定的归档目录不存在。这里D:\a\1\b是Azure DevOps默认的$(Build.BinariesDirectory)路径,2614是当前的$(Build.BuildId),意味着你的流水线中没有在该路径下生成对应BuildId的目录。
可以按以下步骤排查修复:
验证目录是否存在:在ArchiveFiles任务前添加一个PowerShell任务,打印BinariesDirectory下的所有内容,确认目标目录是否生成:
Get-ChildItem -Path $(Build.BinariesDirectory) -Recurse Write-Host "当前BuildId: $(Build.BuildId)"运行流水线后查看日志,就能清楚看到是否有
$(Build.BuildId)对应的目录。检查前置任务的输出路径:确认你之前的构建/编译任务(比如DotNetCoreCLI@2、MSBuild@1等)是否将输出文件正确放到了
$(Build.BinariesDirectory)/$(Build.BuildId)下。很多时候是前置任务的输出路径配置错误,导致目标目录为空或根本没创建。调整归档路径:如果
$(Build.BuildId)目录不是必须的归档目标,可以直接归档整个BinariesDirectory,或者具体的输出子目录(比如Release、Debug)。修改ArchiveFiles任务的rootFolderOrFile配置:rootFolderOrFile: '$(Build.BinariesDirectory)' # 或者指定具体子目录,比如: # rootFolderOrFile: '$(Build.BinariesDirectory)/Release'确认变量引用正确性:虽然这里变量写法没问题,但可以在任务中打印变量值,确保
$(Build.BuildId)和$(Build.BinariesDirectory)的取值符合预期:Write-Host "BinariesDirectory路径: $(Build.BinariesDirectory)" Write-Host "当前BuildId: $(Build.BuildId)"
内容的提问来源于stack exchange,提问作者Jitender Kumar

