Partager via


CopyFiles@2 - Copie de 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.

Données d'entrée

SourceFolder - dossier source
string.

Optionnel. Dossier qui contient les fichiers que vous souhaitez copier. Si le dossier est vide, la tâche copie les fichiers du dossier racine du référentiel comme si $(Build.SourcesDirectory) a été spécifié.

Si votre build produit des artefacts en dehors du répertoire sources, 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 dans le dossier source spécifié.
  • ** copie tous les fichiers dans le dossier source spécifié et tous les fichiers de tous les sous-dossiers.
  • **\bin\** copie tous les fichiers de manière récursive à partir de n’importe quel dossier bin.

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

L’habillage de caractères spéciaux dans [] peut être utilisé pour échapper des caractères glob littérals dans un nom de fichier. Par exemple, le nom de fichier littéral hello[a-z] peut être échappé en tant que hello[[]a-z]. Pour plus d’informations, consultez informations de référence sur les modèles de correspondance de fichiers.

Utilisez le séparateur de chemin qui correspond à votre type d’agent de build. Par exemple, / doit être utilisé pour les agents Linux. Vous trouverez ci-dessous d’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 - dossier cible propre
boolean. Valeur par défaut : false.

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


OverWrite - remplacer
boolean. Valeur par défaut : false.

Optionnel. Remplace les fichiers existants dans le dossier cible.


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

Optionnel. Aplatit la structure du dossier 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 - Réessayez de 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 cibles UNC sur un hôte distant.


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

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


ignoreMakeDirErrors - Ignorez 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 au sein d’un même dossier cible.


Options de contrôle de tâche

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

Variables de sortie

Aucun.

Remarques

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 consigne 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 sera écrasé.

Exemples

Copiez le fichier dans le répertoire de staging des artefacts et publiez-le

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

Copier les exécutables et un fichier readme

Objectif

Vous souhaitez copier uniquement le fichier readme et les fichiers nécessaires à l’exécution de cette application console C# :

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

Remarque

ConsoleApplication1.sln contient un dossier bin avec des fichiers .dll et .exe, consultez les résultats ci-dessous pour voir ce qui est déplacé !

Dans l’onglet Variables, $(BuildConfiguration) est défini 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 la 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 la 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

Les fichiers suivants sont copiés dans le répertoire de transfert :

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

Copiez tout ce qui se trouve dans le 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

Besoin Descriptif
Types de pipelines YAML, build classique
Exécutions sur Agent, DeploymentGroup
demandes Aucun
Capacités Cette tâche ne répond à aucune demande de tâches ultérieures dans le travail.
restrictions de commande Cette tâche s’exécute à l’aide des restrictions de commande suivantes: restreint
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 tâche Utilité
Besoin Descriptif
Types de pipelines YAML, build classique
Exécutions sur Agent, DeploymentGroup
demandes Aucun
Capacités Cette tâche ne répond à aucune demande de tâches ultérieures dans le travail.
restrictions de commande N'importe lequel
variables settables N'importe lequel
Version de l’agent 1.91.0 ou version ultérieure
Catégorie de tâche Utilité

Voir aussi