CopyFiles@2 — задача копирования файлов версии 2

Используйте эту задачу для копирования файлов из исходной папки в целевую папку с помощью шаблонов соответствия. (Шаблоны соответствия будут соответствовать только путям к файлам, но не к папкам).

Синтаксис

# Copy files v2
# Copy files from a source folder to a target folder using patterns matching file paths (not folder paths).
- task: CopyFiles@2
  inputs:
    #SourceFolder: # string. Source Folder. 
    Contents: '**' # string. Required. Contents. Default: **.
    TargetFolder: # string. Required. Target Folder. 
  # Advanced
    #CleanTargetFolder: false # boolean. Clean Target Folder. Default: false.
    #OverWrite: false # boolean. Overwrite. Default: false.
    #flattenFolders: false # boolean. Flatten Folders. Default: false.
    #preserveTimestamp: false # boolean. Preserve Target Timestamp. Default: false.
    #retryCount: '0' # string. Retry count to copy the file. Default: 0.
    #delayBetweenRetries: '1000' # string. Delay between two retries. Default: 1000.
    #ignoreMakeDirErrors: false # boolean. Ignore errors during creation of target folder. Default: false.
# Copy files v2
# Copy files from a source folder to a target folder using patterns matching file paths (not folder paths).
- task: CopyFiles@2
  inputs:
    #SourceFolder: # string. Source Folder. 
    Contents: '**' # string. Required. Contents. Default: **.
    TargetFolder: # string. Required. Target Folder. 
  # Advanced
    #CleanTargetFolder: false # boolean. Clean Target Folder. Default: false.
    #OverWrite: false # boolean. Overwrite. Default: false.
    #flattenFolders: false # boolean. Flatten Folders. Default: false.
    #preserveTimestamp: false # boolean. Preserve Target Timestamp. Default: false.
# Copy Files v2
# Copy files from source folder to target folder using match patterns (The match patterns will only match file paths, not folder paths).
- task: CopyFiles@2
  inputs:
    #SourceFolder: # string. Source Folder. 
    Contents: '**' # string. Required. Contents. Default: **.
    TargetFolder: # string. Required. Target Folder. 
  # Advanced
    #CleanTargetFolder: false # boolean. Clean Target Folder. Default: false.
    #OverWrite: false # boolean. Overwrite. Default: false.
    #flattenFolders: false # boolean. Flatten Folders. Default: false.

Входные данные

SourceFolder - Исходная папка
string.

Необязательный элемент. Папка, содержащая файлы, которые нужно скопировать. Если папка пуста, задача копирует файлы из корневой папки репозитория так, как будто $(Build.SourcesDirectory) она была указана.

Если сборка создает артефакты за пределами исходного каталога, укажите $(Agent.BuildDirectory) для копирования файлов из каталога, созданного для конвейера.


Contents - Содержимое
string. Обязательный. Значение по умолчанию: **.

Пути к файлам, включаемые в копию. Эта строка поддерживает несколько строк шаблонов соответствия.

Пример:

  • * копирует все файлы в указанной исходной папке.
  • ** копирует все файлы в указанной исходной папке и все файлы во всех вложенных папках.
  • **\bin\** рекурсивно копирует все файлы из любой папки bin.

Шаблон используется для сопоставления только путей к файлам, а не путей к папкам. Укажите шаблоны, например , вместо **\bin\****\bin.

Используйте разделитель пути, соответствующий типу агента сборки. Например, / должен использоваться для агентов Linux. Ниже приведены дополнительные примеры.


TargetFolder - Целевая папка
string. Обязательный.

Целевая папка или UNC-путь, который будет содержать скопированные файлы. Можно использовать переменные. Например, $(build.artifactstagingdirectory).


CleanTargetFolder - Очистка целевой папки
boolean. Значение по умолчанию: false.

Необязательный элемент. Удаляет все существующие файлы в целевой папке перед процессом копирования.


OverWrite - Перезаписать
boolean. Значение по умолчанию: false.

Необязательный элемент. Заменяет существующие файлы в целевой папке.


flattenFolders - Плоские папки
boolean. Значение по умолчанию: false.

Необязательный элемент. Преобразует структуру папок в плоскую структуру и копирует все файлы в указанную целевую папку.


preserveTimestamp - Сохранение целевой метки времени
boolean. Значение по умолчанию: false.

Сохраняет метку времени целевого файла с помощью исходного файла.


retryCount - Число повторных попыток для копирования файла
string. Значение по умолчанию: 0.

Указывает число повторных попыток копирования файла. Эта строка полезна для периодических проблем, таких как целевые пути UNC на удаленном узле.


delayBetweenRetries - Задержка между двумя повторными попытками.
string. Значение по умолчанию: 1000.

Указывает задержку между двумя повторными попытками. Эта строка полезна для периодических проблем, таких как целевые пути UNC на удаленном узле.


ignoreMakeDirErrors - Игнорируйте ошибки во время создания целевой папки.
boolean. Значение по умолчанию: false.

Игнорирует ошибки, возникающие во время создания целевой папки. Эта строка полезна для предотвращения проблем с параллельным выполнением задач несколькими агентами в одной целевой папке.


Параметры управления задачами

Помимо входных данных, все задачи имеют параметры управления. Дополнительные сведения см. в разделе Параметры управления и общие свойства задачи.

Выходные переменные

Нет.

Remarks

Если файлы не совпадают, задача по-прежнему будет сообщать об успешном выполнении.

  • Если Overwrite имеет значение и false соответствующий файл уже существует в целевой папке, задача не будет сообщать о сбое, а записывать в журнал, что файл уже существует, и пропускать его.
  • Если Overwrite имеет значение true и сопоставленный файл уже существует в целевой папке, соответствующий файл будет перезаписан.

Примеры

Копирование файла в промежуточный каталог артефактов и публикация

steps:
- task: CopyFiles@2
  inputs:
    contents: '_buildOutput/**'
    targetFolder: $(Build.ArtifactStagingDirectory)
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: $(Build.ArtifactStagingDirectory)
    artifactName: MyBuildOutputs

Копирование исполняемых файлов и файла сведений

Goal

Вы хотите скопировать файл сведений и файлы, необходимые для запуска этого консольного приложения C#:

`-- ConsoleApplication1
    |-- ConsoleApplication1.sln
    |-- readme.txt
    `-- ClassLibrary1
        |-- ClassLibrary1.csproj
    `-- ClassLibrary2
        |-- ClassLibrary2.csproj
    `-- ConsoleApplication1
        |-- ConsoleApplication1.csproj

Примечание

ConsoleApplication1.sln содержит папку bin с .dll и .exe файлами. См. раздел Результаты ниже, чтобы узнать, что перемещается!

На вкладке $(BuildConfiguration) Переменные для параметра задано значение release.

Пример с несколькими шаблонами совпадений:

steps:
- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
  inputs:
    Contents: |
      ConsoleApplication1\ConsoleApplication1\bin\**\*.exe
      ConsoleApplication1\ConsoleApplication1\bin\**\*.dll
      ConsoleApplication1\readme.txt
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

Пример с условием OR:

steps:
- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
  inputs:
    Contents: |
      ConsoleApplication1\ConsoleApplication1\bin\**\?(*.exe|*.dll)
      ConsoleApplication1\readme.txt
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

Пример с условием NOT:

steps:
- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
  inputs:
    Contents: |
      ConsoleApplication1\**\bin\**\!(*.pdb|*.config)
      !ConsoleApplication1\**\ClassLibrary*\**
      ConsoleApplication1\readme.txt
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

Пример с переменными в разделе содержимого

- task: CopyFiles@2
  inputs:
    Contents: '$(Build.Repository.LocalPath)/**' 
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

Результаты

Эти файлы копируются в промежуточный каталог:

`-- ConsoleApplication1
    |-- readme.txt
    `-- ConsoleApplication1
        `-- bin
            `-- Release
                | -- ClassLibrary1.dll
                | -- ClassLibrary2.dll
                | -- ConsoleApplication1.exe

Скопируйте все данные из исходного каталога, кроме папки .git

Пример с несколькими шаблонами совпадений:

steps:
- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)'
    Contents: |
      **/*
      !.git/**/*
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

Требования

Требование Описание
Типы конвейеров YAML, классическая сборка
Выполняется в Агент, DeploymentGroup
Требования Нет
Capabilities Эта задача не удовлетворяет требованиям для последующих задач в задании.
Ограничения команд Эта задача выполняется с использованием следующих ограничений команд: restricted
Устанавливаемые переменные Эта задача имеет разрешение на установку следующих переменных: настройка переменных отключена
Версия агента 2.182.1 или более поздней версии
Категория задач Служебная программа
Требование Описание
Типы конвейеров YAML, классическая сборка
Выполняется в Агент, DeploymentGroup
Требования Нет
Capabilities Эта задача не удовлетворяет требованиям для последующих задач в задании.
Ограничения команд Любой
Устанавливаемые переменные Любой
Версия агента 1.91.0 или более поздней версии
Категория задач Служебная программа

См. также раздел