Поделиться через


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.

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

исходной папки SourceFolder -
string.

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

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


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

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

Рассмотрим пример.

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

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

Перенос специальных символов в [] можно использовать для экранирования символов литеральных глобов в имени файла. Например, имя литерального файла hello[a-z] можно экранировать как hello[[]a-z]. Дополнительные сведения см. в справочнике по шаблонам сопоставления файлов.

Используйте разделитель пути, соответствующий типу агента сборки. Например, / необходимо использовать для агентов 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.

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


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

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

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

Нет.

Замечания

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

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

Примеры

Скопируйте файл в промежуточную директорию артефактов и опубликуйте

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

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

Цель

Вы хотите скопировать только файл сведений и файлы, необходимые для запуска этого консольного приложения 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
Требования Отсутствует
Возможности Эта задача не удовлетворяет требованиям к последующим задачам в задании.
ограничения команд Эта задача выполняется с помощью следующих ограничений команд : ограничено.
переменные settable Эта задача имеет разрешение на задать следующие переменные: параметр переменных отключен
Версия агента 2.182.1 или более поздней версии
Категория задач Полезность
Требование Описание
Типы конвейеров YAML, классическая сборка
Выполняется в Агент, DeploymentGroup
Требования Отсутствует
Возможности Эта задача не удовлетворяет требованиям к последующим задачам в задании.
ограничения команд Любое
переменные settable Любое
Версия агента 1.91.0 или больше
Категория задач Полезность

См. также