次の方法で共有


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.

入力

ソース フォルダーSourceFolder -
string

任意。 コピーするファイルを含むフォルダー。 フォルダーが空の場合、タスクは、$(Build.SourcesDirectory) が指定されたかのように、リポジトリのルート フォルダーからファイルをコピーします。

ビルドでソース ディレクトリの外部で成果物が生成される場合は、パイプライン用に作成されたディレクトリからファイルをコピーする $(Agent.BuildDirectory) を指定します。


Contents - コンテンツ
string。 必須。 既定値: **

コピーの一部として含めるファイル パス。 この文字列は、複数行の一致パターンをサポートします。

例えば次が挙げられます。

  • * 指定したソース フォルダー内のすべてのファイルをコピーします。
  • ** は、指定したソース フォルダー内のすべてのファイルと、すべてのサブフォルダー内のすべてのファイルをコピーします。
  • **\bin\** は、すべてのファイルを任意の bin フォルダーから再帰的にコピーします。

このパターンは、フォルダー パスではなく、ファイル パスのみを照合するために使用されます。 **\bin\**ではなく、**\bin などのパターンを指定します。

[] で特殊文字をラップすると、ファイル名内のリテラル glob 文字をエスケープできます。 たとえば、リテラル ファイル名 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 - 2 回の再試行間の遅延。
string。 既定値: 1000

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


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

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


タスク コントロールのオプション

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

出力変数

なし。

注釈

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

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

例示

アーティファクトステージングディレクトリへのファイルのコピーと公開

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)'

content セクションに変数がある例

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

こちらも参照ください