Как заменить файл JSON в выпуске на VSTS CD? - PullRequest
0 голосов
/ 04 июля 2018

При развертывании сборки в нескольких средах, таких как UAT, Production. Я хочу заменить один файл config.uat.json или config.prod.json на config.json. Есть ли вариант? так же, как у нас есть преобразование XML.

Мне известно о подстановке переменных Json, но это не соответствует моей цели, поскольку список переменных длинный (почти 50 записей)

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Подстановка переменных JSON должен быть хорошим вариантом, если вы не хотите добавлять переменные по одной на вкладке Variables, вы можете обновить их с помощью VSTS REST API или добавить скрипт powershell установить переменные.

В противном случае вам может потребоваться удалить файл config.uat.json или config.prod.json и скопировать файл config.json на целевой компьютер.

0 голосов
/ 04 июля 2018

Внутри вашего Program.cs файла вы можете получить переменную среды, которая будет представлять вашу текущую среду:

var builder = WebHost.CreateDefaultBuilder(args);
var currentEnv = builder.GetSetting("environnement");

используя это значение currentEnv, вы сможете загрузить файл config.{currentEnv}.json

builder.AddJsonFile($"config.{currentEnv}.json", optional: false, reloadOnChange: true);

EDIT :

Если вы хотите сделать это в powershell, вы можете выполнить преобразование вашего файла конфигурации по умолчанию: appsettings.json, содержащий ключи, и appsettings.env.json, содержащий переопределение.

Чтобы преобразовать вашу конфигурацию, вы можете сделать что-то вроде этого:

Param(
   [Parameter(Mandatory=$true)][string]$SpecificConfig
)
$defaultConfig = "AppSettings.json";
$settingsContent = ConvertFrom-Json $defaultConfig;
$specificContent = ConvertFrom-Json $SpecificConfig;

# Do this on each <property> to override
if (![string]::IsNullOrEmpty($specificContent.<property>))
{
    $settingsContent.<property> = $specificContent.<property>;
}
Write-Host $settingsContent > $defaultConfig;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...