Как скопировать файлы из нескольких папок в Azure DevOps CI? - PullRequest
0 голосов
/ 06 ноября 2018

В моем файле конфигурации yaml для Azure DevOps CI у меня есть задача 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 голосов
/ 03 января 2019

У меня была очень похожая проблема, когда я хотел использовать определенную папку в качестве артефакта сборки.

При прямом назначении папки: 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)'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...