如何从Azure DevOps CI上的多个文件夹中复制文件?

时间:2018-11-05 23:05:22

标签: azure-devops

在用于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。我缺少一些与引号或换行符有关的语法吗?

1 个答案:

答案 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)'