如何使用 azure devops 应用服务部署任务将函数应用设置部署到 azure 函数应用

How to deploy function app settings to azure function app using azure devops app service deployment task

我的 .net 核心 azure 函数应用程序的 local.settings.json 文件中有大约 20 多个(并且还在不断增加)应用程序设置。作为部署的一部分将这些添加到门户中的功能应用程序的唯一方法是使用键值格式的所有应用程序设置的长连接字符串,这非常混乱、容易出错且难以维护。

如果可能,我正在寻找一种巧妙的方法,将应用程序设置添加到函数应用程序,作为函数应用程序部署过程的一部分。

P.S。我正在使用 terraform 创建函数应用程序,对使用甚至更混乱的 ARM 模板解决方案不感兴趣。

如果要将应用程序设置添加到函数应用程序作为函数应用程序部署任务的一部分。您可以使用变量使其更易于维护。您可以查看以下步骤。

定义管道变量中的 key/values appsettings。

您也可以在 YAML 文件中定义变量:

variables:
  key1: value1
  key2: value2

然后在应用服务部署任务的appsettings字段中引用变量

- task: AzureRmWebAppDeployment@4
  inputs:
    AppSettings: '-key1 $(key1) -key2 $(key2)'

另一种解决方法是使用 Azure App Service Settings task 将应用程序设置添加到函数应用程序。 (如果应用服务设置任务用于添加应用设置,则无需为应用部署任务定义appSettings字段)

- task: AzureAppServiceSettings@0
  displayName: Azure App Service Settings
  inputs:
    azureSubscription: $(azureSubscription)
    appName: $(FunctionApp_Name)
    appSettings: |
      [
        {
          "name": "key1",
          "value": "$(Key1)",
          "slotSetting": false
        },
        {
          "name": "key2",
          "value": "$(Key2)",
          "slotSetting": false
        },
        {
          "name": "MYSQL_DATABASE_NAME",
          "value": "$(DB_Name)", 
          "slotSetting": false
        }

因此,通过使用上述解决方法,您只需更改管道变量中的值即可更改函数应用程序的应用程序设置。

您还可以使用 terraform 将应用程序设置添加到您的函数应用程序。请查看本教程中的详细步骤 Automating infrastructure deployments in the Cloud with Terraform and Azure Pipelines

在寻找解决方案时,我在应用程序设置框旁边发现了这个新可用的省略号按钮。单击它会打开一个新对话框,我可以在其中以 table 格式(类似于变量组)在键值对中添加应用程序设置,每个都在单独的行中并且易于维护(每个设置都可以删除)。单击“确定”后,它会生成一个包含所有参数的字符串。

我认为这应该足以维护功能应用程序的 appSettings。

下面是截图