寻求基于Octopus Deploy部署Azure函数应用设置的便捷方案
Managing Azure Function App Settings with Octopus Deploy (No Config Transforms or
local.settings.json) Hey Glen, let's work through this problem—since Microsoft discourages config file transforms for Azure Functions and you don't have a local.settings.json to lean on, here are straightforward, automation-friendly ways to handle environment-specific app settings with Octopus Deploy:
1. Use Octopus' Built-in Azure Function Deployment Step
Octopus has native support for configuring app settings directly in its Azure Functions deployment step, which is the simplest approach:
- When setting up your deployment project, add an Azure Functions step.
- Navigate to the Application Settings section of the step.
- Add key-value pairs for your settings, and leverage Octopus' variable substitution to inject environment-specific values. For example, use
#{Environment.ApiBaseUrl}as the value, where the variable is defined in Octopus' environment-specific variable sets. - This bypasses the need for any local config files entirely—Octopus pushes these settings directly to your Azure Function App's configuration in the portal during deployment.
2. Run Azure CLI Scripts via Octopus
For more control (like bulk updates or conditional logic), use an Azure CLI script step in Octopus:
- Create a script step that runs the
az functionapp config appsettings setcommand. Pass in your settings using Octopus variables:az functionapp config appsettings set \ --name "#{FunctionApp.Name}" \ --resource-group "#{ResourceGroup.Name}" \ --settings "ApiUrl=#{Environment.ApiUrl}" "DbConnectionString=#{Database.ConnectionString}" - Octopus will substitute the variables with values from your environment's variable set, ensuring each environment gets the correct configuration.
3. Deploy with ARM Templates (If You're Provisioning Infrastructure Too)
If you're using ARM templates to provision your Function App alongside deployment, define app settings as template parameters:
- In your ARM template, add the app settings resource block, referencing parameters for environment-specific values:
{ "type": "Microsoft.Web/sites/config", "apiVersion": "2021-03-01", "name": "[concat(parameters('functionAppName'), '/appsettings')]", "properties": { "ApiUrl": "[parameters('apiUrl')]", "DbConnectionString": "[parameters('dbConnectionString')]" }, "dependsOn": [ "[resourceId('Microsoft.Web/sites', parameters('functionAppName'))]" ] } - In Octopus, when deploying the ARM template, map your environment variables to the template parameters. This keeps your infrastructure and configuration in sync across deployments.
Quick Notes to Remember
- Microsoft's guidance makes sense here: Azure Function app settings are loaded as environment variables at runtime, so managing them directly in Azure (via automation) is more reliable than config transforms.
- If you ever need to test locally later, you can manually create a
local.settings.jsonby pulling values from Octopus' variable sets or exporting them from your Azure Function App's portal configuration.
内容的提问来源于stack exchange,提问作者Glen Thomas
相关产品推荐
相关产品推荐

