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 - 2 回の再試行の間の遅延。
string. 既定値: 1000

2 回の再試行の間の遅延を指定します。 この文字列は、リモート ホスト上の UNC ターゲット パスなど、断続的な問題に役立ちます。


ignoreMakeDirErrors - ターゲット フォルダーの作成時のエラーを無視します。
boolean. 既定値: false

ターゲット フォルダーの作成中に発生したエラーを無視します。 この文字列は、1 つのターゲット フォルダー内の複数のエージェントによるタスクの並列実行に関する問題を回避するのに役立ちます。


タスク制御オプション

すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール オプションと一般的なタスク プロパティ」を参照してください。

出力変数

[なし] :

解説

一致するファイルがない場合でも、タスクは成功を報告します。

  • false で、一致したファイルがターゲット フォルダーに既に存在する場合Overwrite、タスクはエラーを報告しませんが、ファイルが既に存在することをログに記録してスキップします。
  • が でtrue、一致したファイルがターゲット フォルダーに既に存在する場合Overwriteは、一致したファイルが上書きされます。

成果物のステージング ディレクトリにファイルをコピーして発行する

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

実行可能ファイルと readme ファイルをコピーする

目標

次の C# コンソール アプリを実行するために必要な readme とファイルのみをコピーします。

`-- 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、クラシック ビルド
上で実行 エージェント、DeploymentGroup
確認要求 なし
Capabilities このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 このタスクは、次の コマンド制限を使用して実行されます。
設定可能な変数 このタスクには、 次の変数を設定するアクセス許可があります。変数の設定は無効です
エージェントのバージョン 2.182.1 以降
タスクのカテゴリ ユーティリティ
要件 説明
パイプラインの種類 YAML、クラシック ビルド
上で実行 エージェント、DeploymentGroup
確認要求 なし
Capabilities このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 Any
設定可能な変数 Any
エージェントのバージョン 1.91.0 以上
タスクのカテゴリ ユーティリティ

こちらもご覧ください