【发布时间】:2019-10-09 22:33:15
【问题描述】:
我有一个配置为从 JSON 文件和环境变量读取应用程序设置的 Azure 函数 (.NET Core):
var configurationBuilder = new ConfigurationBuilder()
.SetBasePath(_baseConfigurationPath)
.AddJsonFile("appsettings.json", optional: true)
.AddEnvironmentVariables()
.Build();
BuildAgentMonitorConfiguration configuration = configurationBuilder.Get<BuildAgentMonitorConfiguration>();
appsettings.json 具有以下结构:
{
"ProjectBaseUrl": "https://my-project.visualstudio.com/",
"ProjectName": "my-project",
"AzureDevOpsPac": ".....",
"SubscriptionId": "...",
"AgentPool": {
"PoolId": 38,
"PoolName": "MyPool",
"MinimumAgentCount": 2,
"MaximumAgentCount": 10
},
"ContainerRegistry": {
"Username": "mycontainer",
"LoginServer": "mycontainer.azurecr.io",
"Password": "..."
},
"ActiveDirectory": {
"ClientId": "...",
"TenantId": "...",
"ClientSecret": "..."
}
}
其中一些设置在 Azure 函数中配置为环境变量。一切都按预期工作:
现在的问题是在构建管道中配置其中一些变量,这些变量用于单元和集成测试。我尝试如下添加变量组并将其链接到管道:
但是没有设置环境变量并且测试失败了。我在这里错过了什么?
【问题讨论】:
-
那些是秘密值吗?如果是,我认为您需要将它们明确映射到任务
-
@4c74356b41 是的,这些都是秘密。我不确定我是否理解“将它们显式映射到任务”是什么意思,请您详细说明一下吗?
-
检查这个答案:stackoverflow.com/questions/53962581/… 第二个代码块显示了如何将秘密变量映射到给定任务的环境变量
-
谢谢@4c74356b41 - 如果我理解正确,这些秘密变量没有设置为环境变量,我需要使用 bash 或 powershell 设置它们吗?
-
我不知道如何使用 bash 或 powershell 访问它们,但是您可以将第二个代码块分配给任何任务并且它会工作,即使用 yaml,我不知道如何要使用那些没有 yaml 的人,应该有办法,但我至少在去年才使用 yaml,不记得常规管道,请随意支持该答案;)
标签: .net-core azure-devops environment-variables azure-functions azure-pipelines