在用于Azure DevOps CI的yaml配置文件中,我具有一个CopyFiles @ 2任务,以便为PublishBuildArtifacts暂存文件。我想(1)从源目录的根目录复制特定文件,以及(2)从特定文件夹复制所有文件。我可以成功复制特定文件,但是当我添加特定文件夹的行时,它将失败。这是yaml代码段:
- task: CopyFiles@2
inputs:
sourceFolder: $(Build.SourcesDirectory)
contents:
?(binclash.log|init-tools.log)
logs/**/*
targetFolder: $(Build.ArtifactStagingDirectory)
源的文件夹树如下所示:
<repo root>
`-- binclash.log
`-- init-tools.log
`-- logs
|-- debug
`-- release
`-- src
`-- ml.cs
如所列,此报告报告找到零个文件。然而,
如果删除logs/**/*
,它将成功找到并复制binclash.log和init-tools.log。我缺少一些与引号或换行符有关的语法吗?
答案 0 :(得分:1)
我遇到了一个非常相似的问题,我想使用特定的文件夹作为构建工件。
直接将文件夹定位为logs/**/*
时,它将返回0个结果。
请尝试使用**/logs/**
我在下面更新了您的代码段:
- task: CopyFiles@2
inputs:
sourceFolder: $(Build.SourcesDirectory)
contents:
?(binclash.log|init-tools.log)
**/logs/**
targetFolder: $(Build.ArtifactStagingDirectory)
当我查看您的代码时,我注意到您可以简化为:
- task: CopyFiles@2
inputs:
contents: '**/logs/**/?(binclash.log|init-tools.log)'
TargetFolder: '$(Build.ArtifactStagingDirectory)'