Развертывание конфигураций приложений-функций Azure через Azure DevOps Pipeline

Я хочу, чтобы мой конвейер Azure DevOps развертывал все конфигурации приложений-функций без ручного ввода их в конвейер DevOps. Как это сделать?

У нас есть код C#, который развертывается в приложениях-функциях Azure. Но мы добавляем конфигурации функциональных приложений вручную в конвейер Azure Devops.

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

Нам нужно направление, чтобы понять, как мы можем автоматизировать параметры конфигурации с помощью конвейеров ADO. Это возможно ?

Это помогает? stackoverflow.com/questions/61598490/…

Rui Jarimba 22.05.2024 12:35

Нет, Руи, здесь мы также вводим ключ1:значение1, ключ2:значение2 вручную в конвейер. У меня 250+ конфигов, нужно ли добавлять все эти 250 конфигов вручную?? Я не хочу этого делать... есть ли другой способ развертывания напрямую из исходного кода?? потому что эти 250 конфигураций не изменятся при переходе от одного окружения к другому. они будут статическими во всех средах от разработки до разработки. Есть ли способ?

surya Teja 22.05.2024 12:39

@suryaTeja В соответствии с вашими требованиями я поделился сценарием для чтения настроек приложения в файле appsettings.json и установки их в приложении Azure Function. Вы можете проверить мой ответ.

Kevin Lu-MSFT 23.05.2024 11:33
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
3
194
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете добавить задачу для запуска сценария Azure CLI, чтобы массово редактировать настройки приложения:

az webapp config appsettings set \
  --resource-group <group-name> \
  --name <app-name> \
  --settings "@settings.json"

Формат файла, необходимый для settings.json, представляет собой массив настроек JSON, в котором поле настройки слота является необязательным.

[
  {
    "name": "key1",
    "slotSetting": false,
    "value": "value1"
  },
  {
    "name": "key2",
    "value": "value2"
  }
]

Для удобства вы можете сохранить существующие настройки в файл JSON с помощью az webapp config appsettings list. Следующий пример можно запустить в Bash:

# Save the settings
az webapp config appsettings list --name <app-name> --resource-group <group-name> > settings.json

# Edit the JSON file
...

# Update the app with the JSON file
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings @settings.json

Это нормально, но есть ли другой способ, который напрямую извлечет все конфигурации из файла appsettings.json и развернет все эти конфигурации непосредственно в приложении-функции??

surya Teja 23.05.2024 07:01

Привет, Руи Джаримба! Наконец-то я выбрал это решение. Все работает нормально, спасибо

surya Teja 27.05.2024 11:49

Файл appsettings.json нельзя использовать напрямую в Azure CLI: az webapp config appsettings set.

Есть ли другой способ, который напрямую извлечет все конфигурации из файла appsettings.json и развернет все эти конфигурации непосредственно в приложении-функции?

Чтобы удовлетворить ваши требования, вы можете использовать скрипт для зацикливания значения настроек приложения в файле appsettings.json. Затем вы можете добавить их в массив и использовать его в команде Azure CLI.

Вот пример:

steps:


- task: AzureCLI@2
  inputs:
    azureSubscription: 'xxx'
    scriptType: 'ps'
    scriptLocation: 'inlineScript'
    inlineScript: |
      $json = Get-Content '$(build.sourcesdirectory)/AzureFunctionAppSettings/Startup/appsettings.json' | Out-String | ConvertFrom-Json
      
      $appsettingnames =  $json.values | Get-Member | Where {$_.MemberType -like 'NoteProperty'} | Select-Object  -Property name
      
      $appsettingslist = @()

      ForEach ($appsettingname in $appsettingnames.name)
      {
        $appsettingvalue =  $json.values.$appsettingname

        $singleappsetting = "`"$appsettingname=$appsettingvalue`""

        $appsettingslist = $appsettingslist + $singleappsetting
      }

      echo $appsettingslist

      
      az webapp config appsettings set --resource-group resourcegroupname --name functionappname --settings $appsettingslist
  

Образец результата:

Привет, Кевин, спасибо, что поделились этим. Несмотря на то, что я не пробовал ваше решение, но решение, предоставленное Руи ниже, работает нормально, нам не нужно перебирать массив в соответствии с решением Руи. Спасибо

surya Teja 27.05.2024 11:51

Другие вопросы по теме