Azure конвейеры -Добавить новый элемент в массив json конвейеров VSTS (Appsettings. json) - PullRequest
0 голосов
/ 29 января 2020

Можно ли добавить новый элемент в массив appsetting.json в Azure Release Pipeline?

В appsetting.json У меня есть переменная массива, которую нужно заполнить другим элементом во время развертывания через Azure Pipeline.

  "Array": [
                {
                    "Name": "AD1",
                    "IsDefault": "true",
                    "IdPEntityId": "URL1",
                    "Metadata": "XMLpath1"
                },
                {
                    "Name": "AD2",
                    "IsDefault": "false",
                    "IdPEntityId": "URL2",
                    "Metadata": "XMLPath2"
                }
]

Здесь, в приведенном выше массиве JSON, мне нужно добавить еще одну элементарную последнюю позицию (array-Index: 2).

Ответы [ 2 ]

1 голос
/ 07 февраля 2020
[CmdletBinding()]

param(
    [string] $AdName,
    [bool]   $AdIsDefault,
    [string] $AdIdPEntityId, 
    [string] $AdMetadata,
    [string] $AppSettingFilePath  
)
clear-Host

Write-Host 'Updating appsettings.json...' -ForegroundColor Yellow

function Format-Json([Parameter(Mandatory, ValueFromPipeline)][String] $json) {
  $indent = 0;
  ($json -Split '\n' |
    % {
      if ($_ -match '[\}\]]') {
        # This line contains  ] or }, decrement the indentation level
        $indent--
      }
      $line = (' ' * $indent * 2) + $_.TrimStart().Replace(':  ', ': ')
      if ($_ -match '[\{\[]') {
        # This line contains [ or {, increment the indentation level
        $indent++
      }
      $line
  }) -Join "`n"
}

$JsonDataAdd=@"
{
                    "Name":"$AdName",
                    "IsDefault": "$AdIsDefault",
                    "IdPEntityId":"$AdIdPEntityId",
                    "Metadata": "$AdMetadata"
}
"@
Write-Host ' Active directory details :' -ForegroundColor Yellow

Write-Host `n  $JsonDataAdd -ForegroundColor Green

$jsonData = Get-Content "$AppSettingFilePath" | Out-String | ConvertFrom-Json -ErrorAction Stop


$jsonData.IdentitySettings.ExternalProviders.Saml2Providers += (ConvertFrom-Json $JsonDataAdd)


$jsonData | ConvertTo-Json -Depth 10 |  Format-Json | Set-Content "$AppSettingFilePath" -Encoding UTF8

Write-Host 'Successfully Updated -appSettings.json  !' -ForegroundColor Yellow
0 голосов
/ 30 января 2020

Вы можете использовать JSON подстановку переменных. Эта функция заменяет значения в файлах конфигурации JSON. Он переопределяет значения в указанных файлах конфигурации JSON (например, appsettings. json) со значениями, соответствующими именам конвейера выпуска и переменных рабочей области.

В задании по выпуску «Развернуть Azure Служба приложений» вы должны увидеть раздел « Преобразования файлов и подстановка переменных ». Здесь вы предоставите путь к файлу json, который вы хотите поменять значениями переменных.

[! [Введите описание изображения здесь] [1]] [1]

Тогда вы просто необходимо определить требуемые значения подстановки в переменных конвейера выпуска или этапа. Отсюда вы можете добавить свойство json, которое хотите изменить, в качестве переменной.

[! [Введите описание изображения здесь] [2]] [2]

Наконец, после преобразования, JSON будет содержать новое. Azure DevOps затем поменяет эти значения для вас при развертывании.

Более подробно вы можете обратиться к нашему официальному учебнику здесь: [Преобразование файлов и ссылка на замену переменных] [3]


Обновление:

Работает только для настройки существующих записей в файлах appsettings. json, похоже, что не может добавить ни одного нового. Вы также можете взглянуть на JSON заметки о замене переменных

Подстановка переменных применяется только для ключей JSON, предопределенных в иерархии объектов. Он не создает новые ключи.

В качестве обходного пути вы можете использовать расширение File Creator: https://marketplace.visualstudio.com/items?itemName=eliostruyf.build-task до pu sh все новые настройки приложения. * Файл 1053 * в конвейере.

Update2

OP наконец-то перемещен с помощью написанного им сценария PS для добавления новых элементов в Arrays of Appsettings. json

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...