如何在Azure DevOps YAML管道中使用含点的隐藏文件夹路径?
Azure DevOps CopyFiles@2 任务访问隐藏目录(.azure)的解决方法
问题说明
使用CopyFiles@2任务时,若配置SourceFolder: '.azure/ARMTemplates/',会触发以下路径未找到错误:
##[error]Error: Not found SourceFolder: /home/vsts/work/1/s/.azure/ARMTemplates/
而去掉路径开头的点,改用azure/ARMTemplates/则可正常运行。这并非Linux隐藏目录本身的限制,而是路径解析或任务配置细节导致的问题。
解决方法
使用预定义环境变量拼接完整路径
利用ADO的$(Build.SourcesDirectory)环境变量指定绝对路径,避免相对路径的解析歧义:- task: CopyFiles@2 inputs: SourceFolder: '$(Build.SourcesDirectory)/.azure/ARMTemplates/' TargetFolder: '$(Build.ArtifactStagingDirectory)'确认目录已提交至仓库
检查项目的.gitignore文件,确保.azure/ARMTemplates/未被添加忽略规则。若目录被Git忽略,ADO代理拉取代码时不会同步该目录,自然会触发路径不存在错误。提前验证路径存在性
在CopyFiles任务前添加Bash脚本,确认隐藏目录存在并输出详情,便于排查:- script: | echo "Checking .azure directory structure:" ls -la $(Build.SourcesDirectory)/.azure/ displayName: 'Verify hidden directory exists'调整路径写法
去掉路径末尾的斜杠,或用双引号包裹路径,避免任务解析路径时出现异常:# 去掉末尾斜杠 - task: CopyFiles@2 inputs: SourceFolder: '.azure/ARMTemplates' TargetFolder: '$(Build.ArtifactStagingDirectory)'或
# 用双引号包裹路径 - task: CopyFiles@2 inputs: SourceFolder: ".azure/ARMTemplates/" TargetFolder: '$(Build.ArtifactStagingDirectory)'
内容的提问来源于stack exchange,提问作者atconway
相关产品推荐
相关产品推荐

