1
votes

Modifier tous les fichiers de configuration Web. *. Lors de la première étape du pipeline de versions

J'ai besoin de changer les éléments dans les paramètres de l'application sur tous les fichiers Web. *. config dans la première étape. C'est-à-dire que je ne peux pas effectuer de transformation à chaque étape du pipeline de versions. La raison en est que j'utilise Episerver DXC / DXP.

J'ai 4 étapes; "Upload Package", "Integration", "Preproduction" et "Production" .

Les valeurs sont stockées dans Azure Key Vault.

Existe-t-il un moyen intelligent de le faire?


1 commentaires

Puis-je savoir comment est le statut de cela? Les réponses ci-dessous vous aident-elles à résoudre votre casse-tête? Pensez à accepter une réponse si vous pensez que cela aiderait également les autres :-)


3 Réponses :


0
votes

Si Transformation de fichier ne convient pas à votre projet, qu'en est-il du script powershell pour effectuer le changement d'élément?

Sample:

Voici mon exemple web.product.config:

Param(
[string]$source,
[string]$connectionstring
)
$webConfig = $source
$doc = (Get-Content $webConfig) -as [Xml]
$root = $doc.get_DocumentElement();
$activeConnection = $root.connectionStrings.SelectNodes("add");
$activeConnection.SetAttribute("connectionString", $connectionstring);
$doc.Save($webConfig)

Je souhaite maintenant mettre à jour la connectionString du fichier .config . Ajoutez replace.ps1 dans les dépôts avec les scripts ci-dessous, puis appelez ce fichier replace.ps1 dans la tâche Powershell en passant la valeur dynamique correspondante:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="service.tasks" type="HRNetTaskService.TaskConfigurationSection, TaskService" />
  </configSections>
  <connectionStrings>
    <add name="Production" connectionString="xxxx" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="RestServiceUrl" value="https://sample.net" />   
  </appSettings> 
</configuration>


0 commentaires


0
votes

Ce que j'essayais de faire était de remplacer les variables dans les fichiers de configuration d'Azure Key Vault avant la transformation sur les fichiers de configuration, car cela ne peut pas être fait (à ce stade) pendant le pipeline de publication lors de l'utilisation d'Episerver DXC. Ce que j'ai fait a été de les remplacer pendant le pipeline de construction.

A effectué la substitution de variable dans Powershell pendant le pipeline de construction. Importez les secrets de Key Vault en tant que tâche distincte avant la tâche Powershell, répertoriez tous ceux que j'utiliserais comme variables d'environnement dans la tâche Powershell.

Les variables d'environnement que j'ai nommées sont identiques à celles qu'il devrait remplacer dans les fichiers de configuration (ex SomeApiKey_Integration ). Parcourez les fichiers de configuration, recherchez deux éléments entre deux doubles traits de soulignement et remplacez-les par la valeur de la variable d'environnement ((Get-ChildItem $ variable) .Value).

Dans les fichiers de configuration et la variable d'environnement, ils sont nommés comme indiqué précédemment, SomeApiKey_Integration . Nom de Key Vault et valeur de la variable d'environnement en tant que SomeApiKey-Integration.


1 commentaires

J'ai également besoin de remplacer les valeurs dans le fichier webconfig et j'ai également utilisé des tâches de jeton remplacées pour cela, mais j'ai toujours un peu de confusion, après la tokenisation implémentée sur le fichier web.Config principal qui est également utilisé par les développeurs et également ajouté un jeton, si j'ajoute test = '# {token} #' que les développeurs ne pourront pas exécuter l'application car les valeurs ont été modifiées par # {} # Est-ce qu'elles peuvent remplacer les valeurs sans "Remplacer le jeton"