如何在代码中找到azure function应用程序的部署环境
场景是:如何在代码中找到azure function应用程序的部署环境,azure,azure-devops,azure-functions,Azure,Azure Devops,Azure Functions,场景是: 我们有Azure DevOps,我们可以运行一个管道到x个命名环境之一 我们使用Azure应用程序配置和每个环境的值标签。因此,对于每个设置,它可能具有不同的值,具体取决于标签 我突然想到,如果我将标签与环境名称匹配,那么在代码中,当我获得配置值时,如果我能够以某种方式确定我部署到了什么环境(从代码的角度讲)然后我可以在获取应用程序配置时传递这个变量,这样我就可以为我的环境设置正确的配置 var environment = // HERE find my
var environment = // HERE find my deployed to environment as in pipeline (1.)
var credentials = new DefaultAzureCredential();
configurationBuild.AddAzureAppConfiguration(options =>
{
options.Connect(settings.GetValue<string>("ConnectionStrings:AppConfig"))
.Select(KeyFilter.Any, LabelFilter.Null)
.Select(KeyFilter.Any, labelFilter: environment);
});
var-environment=//这里找到我的部署到环境中的管道(1)
var credentials=新的DefaultAzureCredential();
configurationBuild.AddAzureAppConfiguration(选项=>
{
options.Connect(settings.GetValue(“ConnectionString:AppConfig”))
.选择(KeyFilter.Any,LabelFilter.Null)
.选择(KeyFilter.Any,labelFilter:environment);
});
我认为解决方案应该是在azure-pipelines.yaml中设置环境,其中管道不知何故知道环境的选择,然后从环境变量中读取代码。但是我不知道怎么做,或者有没有更好的方法?提前感谢您提供的帮助。您可以使用管道变量将环境值传递给代码。您在azure-pipelines.yaml中定义的将作为平台的环境变量注入,这允许您使用
environment.GetEnvironmentVariable()
在代码中获取它们的值
因此,您可以在azure-pipelines.yaml中定义管道变量,如下面的示例(即DeployEnv
):
然后,您可以在代码中获得管道变量(即DeployEnv
),如下所示:
using System;
var environment = Environment.GetEnvironmentVariable("DeployEnv");
var credentials = new DefaultAzureCredential();
....
另一种解决方法是在config(例如web.config)文件中定义环境属性。您可以在代码中读取环境属性。在管道中,您需要添加任务以替换配置文件中环境属性的值。有关更多信息,请参阅。非常感谢您的回答。小问题我认为yaml变量声明应该是:variables:-name:DeployEnv-value:${{parameters.Environment}}这样正确吗?谢谢。@JML上面的格式和你的格式都是正确的。。
using System;
var environment = Environment.GetEnvironmentVariable("DeployEnv");
var credentials = new DefaultAzureCredential();
....