web-dev-qa-db-fra.com

La transformation XML Azure DevOps pendant la version ne fonctionne pas

Je souhaite configurer notre pipeline pour permettre à une génération d'être utilisée pour plusieurs environnements sans avoir à créer des versions distinctes. Selon le docs , il semble que ce soit possible, comme il est dit:

  • Vous pouvez utiliser cette technique pour créer un package par défaut et le déployer sur plusieurs étapes.

J'ai nommé ma scène comme mon environnement (aperçu) et j'ai créé un fichier web.config pour ce fichier d'environnement (web.preview.config). Tous mes fichiers de configuration d'environnement dans le même chemin que le fichier Web.Config.

Les journaux indiquent que la transformation était terminée:

2018-11-17T00: 26: 52.0383966Z [commande] D:\a_tasks\AzureRmWebAppDeployment_497d490f-eea7-4f2b-ab94-48d9c1acdcb1\3.4.13\ctt\ctt.exe s: D:\a_temp\temp_web_package_04882 a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.config t: D:\a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.Release.config d: D:\a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.config pw i 2018-11-17T00: 26: 52.4335280Z [commande] D:\a_tasks\AzureRmWebAppDeployment_497d490f-eea7 -4f2b-ab94-48d9c1acdcb1\3.4.13\ctt\ctt.exe s: D:\a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.config t: D:\a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Previe w\Package\PackageTmp\bin\Web.Preview.config d: D:\a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.config pw i 2018-11-17T00: 26: 52.5443873Z Transformations XML appliquées avec succès

Je peux voir qu'il s'est d'abord transformé pour sortir, puis il a appliqué l'aperçu comme le dit le document (libération puis environnement). Cependant, bien qu'il indique que les transformations XML ont été appliquées avec succès, lorsque je vérifie les variables de configuration, elles ne sont pas modifiées. La seule façon de faire fonctionner la transformation était de définir la variable buildConfiguration lorsque je mettais en file d'attente une nouvelle génération, ce qui m'empêchait d'utiliser la même génération pour différents environnements.

Quand je faisais des recherches, je l'ai trouvé à partir de cela lien :

Web.config est transformé au cours du processus de génération. Si vous générez le package de déploiement à partir de "Build" puis le déployez dans "Release", vous ne pouvez pas le transformer avant le déploiement.

Mais le doc a dit que je peux utiliser un package par défaut pour plusieurs étapes ... Est-ce que cela signifie toujours que je dois créer une version distincte pour chaque environnement? La transformation XML n'est-elle pas celle que je devrais envisager pour le scénario que je veux résoudre?

Merci d'avance!

++ Modifier:

Paramètres de libération: ReleaseSettings

Relâchez les étapes (je pense? J'ai le sentiment fort que c'est ce que vous recherchez ...): ReleaseSteps

5
Sahngah Lee

Je viens de faire en sorte que je puisse avoir une version avec déploiement dans plusieurs environnements. C'est ce que j'ai fait.

Dans le code, j'ai défini chaque propriété Web..config sur Build Action = "Content". J'ai également défini tous les miens sur Copier vers le répertoire de sortie = "Copier toujours". J'ai également déchargé le projet et édité le fichier csproj, puis supprimé les lignes Web.config. Cela vide tous vos fichiers web.configs à la racine (pas d'imbrication de fichiers).

Dans la version, j'ai défini la variable de pipeline BuildConfiguration = "Release". Je n'ai pas de Web.Release.config dans mon projet.

Dans la version, j'ai nommé l'étape de déploiement d'après l'environnement (dans mon cas, Développement, Mise en scène et Production). À toutes les étapes, sur la tâche de déploiement Azure, j'ai coché la case Transformation XML.

Dans Azure, j'ai défini ASPNETCORE_ENVIRONMENT sur la dénomination de l'environnement de transfert, dans mon cas, développement, transfert et production).

0
Joe Wilson

Je viens aussi de faire fonctionner ça. Mon problème était en fait au niveau de la solution Visual Studio. J'avais le projet MVC pointé vers une configuration différente des autres. Vérifiez donc toujours les configurations!

0
OJisBad