Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта задача предназначена для копирования файлов из исходной папки в целевую папку с помощью шаблонов соответствия. (Шаблоны соответствия будут соответствовать только путям к файлам, а не к папкам).
Синтаксис
# 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 или больше |
Категория задач | Полезность |
См. также
- Справочник по шаблонам сопоставления файлов
- Как использовать эту задачу для публикации артефактов
- Узнайте, как использовать подробные журналы для устранения неполадок .