CopyFiles@2 - Tâche copier des fichiers v2

Utilisez cette tâche pour copier des fichiers d’un dossier source vers un dossier cible à l’aide de modèles de correspondance. (Les modèles de correspondance correspondent uniquement aux chemins d’accès aux fichiers, et non aux chemins d’accès aux dossiers).

Syntaxe

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

Entrées

SourceFolder - Dossier source
string.

facultatif. Dossier qui contient les fichiers que vous souhaitez copier. Si le dossier est vide, la tâche copie les fichiers du dossier racine du dépôt comme si $(Build.SourcesDirectory) était spécifié.

Si votre build produit des artefacts en dehors du répertoire source, spécifiez $(Agent.BuildDirectory) pour copier des fichiers à partir du répertoire créé pour le pipeline.


Contents - Contenu
string. Obligatoire. Valeur par défaut : **.

Chemins d’accès aux fichiers à inclure dans le cadre de la copie. Cette chaîne prend en charge plusieurs lignes de modèles de correspondance.

Par exemple :

  • * copie tous les fichiers du dossier source spécifié.
  • ** copie tous les fichiers du dossier source spécifié et tous les fichiers de tous les sous-dossiers.
  • **\bin\** copie tous les fichiers de manière récursive à partir d’un dossier bin.

Le modèle est utilisé pour faire correspondre uniquement les chemins d’accès aux fichiers, et non les chemins d’accès aux dossiers. Spécifiez des modèles, comme **\bin\** au lieu de **\bin.

Utilisez le séparateur de chemin qui correspond au type de votre agent de build. Par exemple, / doit être utilisé pour les agents Linux. Voici quelques autres exemples.


TargetFolder - Dossier cible
string. Obligatoire.

Dossier cible ou chemin UNC qui contiendra les fichiers copiés. Vous pouvez utiliser des variables. Exemple : $(build.artifactstagingdirectory).


CleanTargetFolder - Nettoyer le dossier cible
boolean. Valeur par défaut : false.

facultatif. Supprime tous les fichiers existants dans le dossier cible avant le processus de copie.


OverWrite - Écraser
boolean. Valeur par défaut : false.

facultatif. Remplace les fichiers existants dans le dossier cible.


flattenFolders - Aplatir les dossiers
boolean. Valeur par défaut : false.

facultatif. Aplatit la structure des dossiers et copie tous les fichiers dans le dossier cible spécifié.


preserveTimestamp - Conserver l’horodatage cible
boolean. Valeur par défaut : false.

Conserve l’horodatage du fichier cible à l’aide du fichier source d’origine.


retryCount - Nombre de nouvelles tentatives pour copier le fichier
string. Valeur par défaut : 0.

Spécifie le nombre de nouvelles tentatives pour copier le fichier. Cette chaîne est utile pour les problèmes intermittents, tels que les chemins d’accès cible UNC sur un hôte distant.


delayBetweenRetries - Délai entre deux nouvelles tentatives.
string. Valeur par défaut : 1000.

Spécifie le délai entre deux nouvelles tentatives. Cette chaîne est utile pour les problèmes intermittents, tels que les chemins d’accès cible UNC sur un hôte distant.


ignoreMakeDirErrors - Ignorer les erreurs lors de la création du dossier cible.
boolean. Valeur par défaut : false.

Ignore les erreurs qui se produisent lors de la création du dossier cible. Cette chaîne est utile pour éviter les problèmes liés à l’exécution parallèle de tâches par plusieurs agents dans un dossier cible.


Options de contrôle de la tâche

Toutes les tâches ont des options de contrôle en plus de leurs entrées de tâches. Pour plus d’informations, consultez Options de contrôle et propriétés de tâche courantes.

Variables de sortie

Aucun.

Notes

Si aucun fichier ne correspond, la tâche signale toujours la réussite.

  • Si Overwrite est false et qu’un fichier correspondant existe déjà dans le dossier cible, la tâche ne signale pas l’échec, mais journalise que le fichier existe déjà et l’ignore.
  • Si Overwrite est true et qu’un fichier correspondant existe déjà dans le dossier cible, le fichier correspondant est remplacé.

Exemples

Copier le fichier dans le répertoire intermédiaire des artefacts et publier

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

Copier des exécutables et un fichier readme

Objectif

Vous souhaitez copier uniquement le fichier readme et les fichiers nécessaires pour exécuter cette application de console C# :

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

Notes

ConsoleApplication1.sln contient un dossier classe avec des fichiers .dll et .exe. Consultez les résultats ci-dessous pour identifier les éléments déplacés !

Sous l’onglet Variables, la valeur $(BuildConfiguration) est définie sur release.

Exemple avec plusieurs modèles de correspondance :

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

Exemple avec une condition OR :

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

Exemple avec une condition 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)'

Exemple avec des variables dans la section de contenu

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

Résultats

Ces fichiers sont copiés dans le répertoire de mise en lots :

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

Copiez l’ensemble des éléments à partir du répertoire source, à l’exception du dossier .git.

Exemple avec plusieurs modèles de correspondance :

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

Spécifications

Condition requise Description
Types de pipelines YAML, build classique
S’exécute sur Agent, DeploymentGroup
Demandes None
Capabilities Cette tâche ne répond à aucune demande pour les tâches suivantes dans le travail.
Restrictions de commandes Cette tâche s’exécute à l’aide des restrictions de commande suivantes : restricted
Variables settables Cette tâche est autorisée à définir les variables suivantes : La définition des variables est désactivée
Version de l’agent 2.182.1 ou version ultérieure
Catégorie de la tâche Utilitaire
Condition requise Description
Types de pipelines YAML, build classique
S’exécute sur Agent, DeploymentGroup
Demandes None
Capabilities Cette tâche ne répond à aucune demande pour les tâches suivantes dans le travail.
Restrictions de commandes Quelconque
Variables settables Quelconque
Version de l’agent 1.91.0 ou version ultérieure
Catégorie de la tâche Utilitaire

Voir aussi