CopyFiles@2 - 复制文件 v2 任务

可以通过此任务使用匹配模式将文件从源文件夹复制到目标文件夹。 (匹配模式将仅匹配文件路径,而不匹配) 文件夹路径。

语法

# 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

忽略在创建目标文件夹期间发生的错误。 此字符串有助于避免多个代理在一个目标文件夹中并行执行任务时出现问题。


任务控制选项

除了任务输入,所有任务都有控制选项。 有关详细信息,请参阅 控制选项和常见任务属性

输出变量

无。

备注

如果没有文件匹配,则任务仍将报告成功。

  • 如果 Overwritefalse 且目标文件夹中已存在匹配的文件,则任务不会报告失败,而是记录该文件已存在并跳过它。
  • 如果 Overwritetrue 并且目标文件夹中已存在匹配的文件,则将覆盖匹配的文件。

示例

将文件复制到项目暂存目录并发布

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 包含一个包含 .dll 和 .exe 文件的 bin 文件夹。请查看下面的结果以查看移动的内容!

在“变量”选项卡上,$(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,经典版本
运行平台 Agent、DeploymentGroup
需求
功能 此任务不满足作业中后续任务的任何要求。
命令限制 此任务使用以下命令 限制运行:受限
可设置变量 此任务有权 设置以下变量:已禁用设置变量
代理版本 2.182.1 或更高版本
任务类别 实用工具
要求 说明
管道类型 YAML,经典版本
运行平台 Agent、DeploymentGroup
需求
功能 此任务不满足作业中后续任务的任何要求。
命令限制 任意
可设置变量 任意
代理版本 1.91.0 或更高版本
任务类别 实用工具

另请参阅