通过 Azure DevOps Pipeline 部署 Azure 函数应用程序配置

问题描述 投票:0回答:2

我希望我的 Azure DevOps 管道部署所有功能应用程序配置,而不需要在 DevOps 管道中手动输入它们,该怎么做?

我们有 C# 代码,正在部署在 Azure 函数应用程序上。但我们正在 azure devops 管道中手动添加 fucntion 应用程序的配置。

到目前为止,我们正在管道中的 Azure 函数部署任务中输入配置,但我想要它,因为它需要直接来自源代码,而不需要在管道中输入它们。

我们需要指导来了解如何使用 ADO 管道自动化配置值。这可能吗?

azure azure-devops azure-functions azure-pipelines
2个回答
0
投票

您可以添加任务来运行 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"
  }
]

为了方便起见,您可以使用

az webapp config appsettings list
将现有设置保存到 JSON 文件中。以下示例可以在 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

0
投票

appsettings.json 文件不能直接在 Azure CLI 中使用:

az webapp config appsettings set

是否有其他方法可以直接提取 appsettings.json 文件中的所有配置并直接在功能应用程序上部署所有这些配置?

为了满足您的要求,您可以使用脚本循环appsettings.json文件中的应用程序设置值。然后,您可以将它们添加到数组并将其用于 Azure CLI commnad。

这是一个例子:

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
  

结果样本:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.