Freigeben über


CopyFiles@2 - Aufgabe zum Kopieren von Dateien v2

Verwenden Sie diese Aufgabe, um Dateien aus einem Quellordner mithilfe von Übereinstimmungsmustern in einen Zielordner zu kopieren. (Die Übereinstimmungsmuster stimmen nur mit Dateipfaden überein, nicht mit Ordnerpfaden).

Syntax

# 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.

Eingänge

SourceFolder - Quellordner-
string.

Wahlfrei. Der Ordner, der die Dateien enthält, die Sie kopieren möchten. Wenn der Ordner leer ist, kopiert die Aufgabe Dateien aus dem Stammordner des Repositorys, als ob $(Build.SourcesDirectory) angegeben wurde.

Wenn Ihr Build Artefakte außerhalb des Quellverzeichnisses erzeugt, geben Sie $(Agent.BuildDirectory) an, um Dateien aus dem für die Pipeline erstellten Verzeichnis zu kopieren.


Contents - Inhalte
string. Erforderlich. Standardwert: **.

Die Dateipfade, die als Teil der Kopie eingeschlossen werden sollen. Diese Zeichenfolge unterstützt mehrere Übereinstimmungsmuster.

Beispiel:

  • * kopiert alle Dateien im angegebenen Quellordner.
  • ** kopiert alle Dateien im angegebenen Quellordner und alle Dateien in allen Unterordnern.
  • **\bin\** kopiert alle Dateien rekursiv aus jedem Bin-Ordner.

Das Muster wird verwendet, um nur Dateipfade und nicht Ordnerpfade abzugleichen. Geben Sie Muster wie **\bin\** anstelle von **\binan.

Das Umbrechen von Sonderzeichen in [] kann verwendet werden, um Literal-Globzeichen in einem Dateinamen zu escapen. Der Literaldateiname hello[a-z] kann z. B. als hello[[]a-z]escapet werden. Weitere Informationen finden Sie unter Dateiabgleichsmuster.

Verwenden Sie das Pfadtrennzeichen, das Ihrem Build-Agent-Typ entspricht. Beispielsweise muss / für Linux-Agents verwendet werden. Weitere Beispiele finden Sie unten.


TargetFolder - Zielordner-
string. Erforderlich.

Der Zielordner oder UNC-Pfad, der die kopierten Dateien enthält. Sie können Variablenverwenden. Beispiel: $(build.artifactstagingdirectory).


CleanTargetFolder - "Zielordner bereinigen"
boolean. Standardwert: false.

Wahlfrei. Löscht alle vorhandenen Dateien im Zielordner vor dem Kopiervorgang.


OverWrite - überschreiben
boolean. Standardwert: false.

Wahlfrei. Ersetzt die vorhandenen Dateien im Zielordner.


flattenFolders - flache Ordner
boolean. Standardwert: false.

Wahlfrei. Vereinfacht die Ordnerstruktur und kopiert alle Dateien in den angegebenen Zielordner.


preserveTimestamp - Ziel-Zeitstempel beibehalten
boolean. Standardwert: false.

Behält den Zeitstempel der Zieldatei bei, indem die ursprüngliche Quelldatei verwendet wird.


retryCount - Wiederholen Sie die Anzahl, um die Datei zu kopieren
string. Standardwert: 0.

Gibt die Anzahl der Wiederholungsversuche an, um die Datei zu kopieren. Diese Zeichenfolge ist nützlich für zeitweilige Probleme, z. B. UNC-Zielpfade auf einem Remotehost.


delayBetweenRetries - Verzögerung zwischen zwei Wiederholungen.
string. Standardwert: 1000.

Gibt die Verzögerung zwischen zwei Wiederholungen an. Diese Zeichenfolge ist nützlich für zeitweilige Probleme, z. B. UNC-Zielpfade auf einem Remotehost.


ignoreMakeDirErrors - Fehler beim Erstellen des Zielordners ignorieren.
boolean. Standardwert: false.

Ignoriert Fehler, die während der Erstellung des Zielordners auftreten. Diese Zeichenfolge ist nützlich, um Probleme bei der parallelen Ausführung von Aufgaben durch mehrere Agenten innerhalb eines Zielordners zu vermeiden.


Aufgabensteuerungsoptionen

Alle Aufgaben verfügen zusätzlich zu ihren Aufgabeneingaben über Steuerungsoptionen. Weitere Informationen finden Sie unter Steuerelementoptionen und allgemeinen Aufgabeneigenschaften.

Ausgabevariablen

Keiner.

Bemerkungen

Wenn keine Dateien übereinstimmen, meldet die Aufgabe weiterhin erfolglos.

  • Wenn Overwrite eine false übereinstimmende Datei bereits im Zielordner vorhanden ist, meldet die Aufgabe keinen Fehler, sondern protokolliert, dass die Datei bereits vorhanden ist, und überspringt sie.
  • Wenn Overwrite dies true der Fall ist und bereits eine übereinstimmende Datei im Zielordner vorhanden ist, wird die übereinstimmende Datei überschrieben.

Beispiele

Kopieren der Datei in das Staging-Verzeichnis für Artefakte und Veröffentlichen

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

Kopieren von ausführbaren Dateien und einer Readme-Datei

Ziel

Sie möchten nur die Infodatei und die Dateien kopieren, die zum Ausführen dieser C#-Konsolen-App erforderlich sind:

`-- ConsoleApplication1
    |-- ConsoleApplication1.sln
    |-- readme.txt
    `-- ClassLibrary1
        |-- ClassLibrary1.csproj
    `-- ClassLibrary2
        |-- ClassLibrary2.csproj
    `-- ConsoleApplication1
        |-- ConsoleApplication1.csproj

Hinweis

ConsoleApplication1.sln einen bin-Ordner mit .dll und .exe Dateien enthält, sehen Sie sich die Ergebnisse unten an, um zu sehen, was verschoben wird!

Auf der Registerkarte $(BuildConfiguration) Variablen ist auf releasefestgelegt.

Beispiel mit mehreren Übereinstimmungsmustern:

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

Beispiel mit ODER-Bedingung:

steps:
- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
  inputs:
    Contents: |
      ConsoleApplication1\ConsoleApplication1\bin\**\?(*.exe|*.dll)
      ConsoleApplication1\readme.txt
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

Beispiel mit NOT-Bedingung:

steps:
- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
  inputs:
    Contents: |
      ConsoleApplication1\**\bin\**\!(*.pdb|*.config)
      !ConsoleApplication1\**\ClassLibrary*\**
      ConsoleApplication1\readme.txt
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

Beispiel mit Variablen im Inhaltsbereich

- task: CopyFiles@2
  inputs:
    Contents: '$(Build.Repository.LocalPath)/**' 
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

Ergebnisse

Diese Dateien werden in das Staging-Verzeichnis kopiert:

`-- ConsoleApplication1
    |-- readme.txt
    `-- ConsoleApplication1
        `-- bin
            `-- Release
                | -- ClassLibrary1.dll
                | -- ClassLibrary2.dll
                | -- ConsoleApplication1.exe

Kopieren Sie alles aus dem Quellverzeichnis mit Ausnahme des Ordners .git

Beispiel mit mehreren Übereinstimmungsmustern:

steps:
- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)'
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)'
    Contents: |
      **/*
      !.git/**/*
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

Anforderungen

Anforderung BESCHREIBUNG
Pipelinetypen YAML, klassischer Build
Läuft auf Agent, DeploymentGroup
Anforderungen Nichts
Funktionen Dieser Vorgang erfüllt keine Anforderungen für nachfolgende Vorgänge im Auftrag.
Befehlseinschränkungen Diese Aufgabe wird mit den folgenden Befehlseinschränkungenausgeführt: restricted
Settable-Variablen Diese Aufgabe verfügt über die Berechtigung zum Festlegen der folgenden Variablen: Das Festlegen von Variablen ist deaktiviert.
Agentversion 2.182.1 oder höher
Vorgangskategorie Nützlichkeit
Anforderung BESCHREIBUNG
Pipelinetypen YAML, klassischer Build
Läuft auf Agent, DeploymentGroup
Anforderungen Nichts
Funktionen Dieser Vorgang erfüllt keine Anforderungen für nachfolgende Vorgänge im Auftrag.
Befehlseinschränkungen Beliebig
Settable-Variablen Beliebig
Agentversion 1.91.0 oder höher
Vorgangskategorie Nützlichkeit

Siehe auch