FileTransform@2 - Tâche de transformation de fichier v2

Utilisez cette tâche pour remplacer les jetons par des valeurs variables dans les fichiers de configuration XML ou JSON.

Syntaxe

# File transform v2
# Replace tokens with variable values in XML or JSON configuration files.
- task: FileTransform@2
  inputs:
    folderPath: '$(System.DefaultWorkingDirectory)/**/*.zip' # string. Required. Package or folder. Default: $(System.DefaultWorkingDirectory)/**/*.zip.
    #xmlTransformationRules: '-transform **\*.Release.config -xml **\*.config' # string. XML Transformation rules. Default: -transform **\*.Release.config -xml **\*.config.
  # Variable Substitution
    #jsonTargetFiles: # string. JSON target files. 
    #xmlTargetFiles: # string. XML target files.

Entrées

folderPath - Package ou dossier
string. Obligatoire. Valeur par défaut : $(System.DefaultWorkingDirectory)/**/*.zip.

Chemin du fichier du package ou d’un dossier.

Les variables sont Build et Release. Les caractères génériques sont pris en charge.

Par exemple : $(System.DefaultWorkingDirectory)/**/*.zip. Pour les dossiers compressés, le contenu est extrait à l’emplacement TEMP, les transformations exécutées et les résultats sont compressés dans l’emplacement d’origine de l’artefact.


xmlTransformationRules - Règles de transformation XML
string. Valeur par défaut : -transform **\*.Release.config -xml **\*.config.

Fournit une liste séparée par une nouvelle ligne des règles de fichier de transformation à l’aide de la syntaxe : -transform <pathToTransformFile> -xml <pathToSourceConfigurationFile>. Le chemin du fichier de résultat est facultatif et, s’il n’est pas spécifié, le fichier de configuration source est remplacé par le fichier de résultat transformé.


jsonTargetFiles - Fichiers cibles JSON
string.

Fournit une liste de fichiers séparés par une nouvelle ligne pour remplacer les valeurs de variable. Les noms de fichiers doivent être fournis par rapport au dossier racine.

Par exemple, pour remplacer la valeur de ConnectionString dans l’exemple ci-dessous, vous devez définir une variable comme Data.DefaultConnection.ConnectionString dans le pipeline de build ou de mise en production (ou l’environnement du pipeline de mise en production).

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True"
    }
  }
}

La substitution de variable est exécutée après la transformation de la configuration.

Remarque : seules les variables personnalisées définies dans les pipelines de génération/mise en production sont utilisées en substitution. Les variables de pipeline définies par défaut/par le système sont exclues. Si les mêmes variables sont définies dans le pipeline de mise en production et dans la phase, les variables de phase remplacent les variables de pipeline de mise en production.


xmlTargetFiles - Fichiers cibles XML
string.

Fournit une liste de fichiers séparés par une nouvelle ligne pour remplacer les valeurs de variable. Les noms de fichiers doivent être fournis par rapport au dossier racine.

Pour XML, les variables définies dans les pipelines de build ou de mise en production sont mises en correspondance avec les key entrées ou name des appSettingssections , applicationSettingset connectionStrings de tout fichier de configuration et parameters.xml.

La substitution de variable est exécutée après la transformation de la configuration.

Remarque : seules les variables personnalisées définies dans les pipelines de build/mise en production sont utilisées en substitution. Les variables de pipeline définies par défaut/par le système sont exclues. Si les mêmes variables sont définies dans le pipeline de mise en production et dans la phase, les variables de phase remplacent les variables de pipeline de mise en production.


Options de contrôle des tâches

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.

Notes

Nouveautés de la transformation de fichier version 2 :

  • Champs de tâche optimisés qui permettent aux utilisateurs d’activer toutes les fonctionnalités de transformation (XML), de substitution de variables (JSON et XML) dans une seule instance de tâche.
  • La tâche échoue lorsque l’une des transformations/substitution configurées n’est PAS appliquée ou lorsque la tâche n’est pas opérationnelle.

Utilisez cette tâche pour appliquer des transformations de fichiers et des substitutions de variables sur les fichiers de configuration et de paramètres. Pour plus d’informations sur le traitement des traductions, consultez Transformation de fichiers et référence sur la substitution de variables.

Important

Cette tâche est destinée aux packages web et nécessite un fichier de package web. Il ne fonctionne pas sur les fichiers JSON autonomes.

Transformations de fichiers

  • À l’heure actuelle, les transformations de fichiers sont prises en charge uniquement pour les fichiers XML.
  • Pour appliquer une transformation XML aux fichiers de configuration (*.config), vous devez spécifier une liste séparée par une nouvelle ligne de règles de fichier de transformation à l’aide de la syntaxe :-t ransform <path to the transform file> -xml <path to the source file> -result <path to the result file>
  • Les transformations de fichiers sont utiles dans de nombreux scénarios, en particulier lorsque vous déployez sur un App Service et que vous souhaitez ajouter, supprimer ou modifier des configurations pour différents environnements (tels que Dev, Test ou Prod) en suivant la syntaxe standardWeb.config Transformation.
  • Vous pouvez également utiliser cette fonctionnalité pour transformer d’autres fichiers, notamment les fichiers de configuration de l’application de service Windows ou de console (par exemple). FabrikamService.exe.config
  • Les transformations de fichier de configuration sont exécutées avant les substitutions de variables.

Substitution de variables

  • À l’heure actuelle, seuls les formats de fichiers XML et JSON sont pris en charge pour la substitution de variables.
  • Les jetons définis dans les fichiers de configuration cibles sont mis à jour, puis remplacés par des valeurs variables.
  • Les substitutions de variables sont exécutées après les transformations de fichier de configuration.
  • La substitution de variable est appliquée uniquement pour les clés JSON prédéfinies dans la hiérarchie des objets. Il ne crée pas de nouvelles clés.

Notes

Seules les variables personnalisées définies dans les pipelines de build et de mise en production sont utilisées en substitution. Les variables par défaut et de pipeline système sont exclues.

Voici la liste des préfixes actuellement exclus :

  • agent.
  • azure_http_user_agent
  • build.
  • common.
  • release.
  • system.
  • tf_

Si les mêmes variables sont définies à la fois dans le pipeline de mise en production et dans une phase, les variables définies par l’étape remplacent les variables définies par le pipeline.

Voir aussi : Transformation de fichiers et référence de substitution de variable.

Exemples

Si vous avez besoin d’une transformation XML pour s’exécuter sur tous les fichiers de configuration nommés avec le modèle .Production.config, la règle de transformation doit être spécifiée comme suit :

-transform **\*.Production.config -xml **\*.config

Si vous avez un fichier de configuration nommé en fonction du nom de l’étape dans votre pipeline, vous pouvez utiliser :

-transform **\*.$(Release.EnvironmentName).config -xml **\*.config

Pour remplacer des variables JSON imbriquées ou hiérarchiques, spécifiez-les à l’aide d’expressions JSONPath. Par exemple, pour remplacer la valeur de ConnectionString dans l’exemple ci-dessous, vous devez définir une variable comme Data.DefaultConnection.ConnectionString dans le pipeline de build ou de mise en production (ou dans une phase dans le pipeline de mise en production).

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True"
    }
  }
}

Spécifications

Condition requise Description
Types de pipelines YAML, build classique, version classique
S’exécute sur Agent, DeploymentGroup
Demandes Aucun
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 Toutes les versions d’agent prises en charge.
Catégorie de la tâche Utilitaire

Voir aussi