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

Mon*_*ver 6 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。我是否缺少一些与引号或换行符相关的语法?

uni*_*lau 9

我有一个非常类似的问题,我想使用特定的文件夹作为我的构建工件。

当您直接定位文件夹时:logs/**/*,它返回 0 个结果。

相反尝试使用**/logs/**

我已经更新了您的代码片段如下:

- task: CopyFiles@2
  inputs:
    sourceFolder: $(Build.SourcesDirectory)
    contents:
      ?(binclash.log|init-tools.log)
      **/logs/**
    targetFolder: $(Build.ArtifactStagingDirectory)
Run Code Online (Sandbox Code Playgroud)

当我查看您的代码时,我注意到您可以简化为:

- task: CopyFiles@2
  inputs:
    contents: '**/logs/**/?(binclash.log|init-tools.log)'
    TargetFolder: '$(Build.ArtifactStagingDirectory)'
Run Code Online (Sandbox Code Playgroud)