.net-core - 如何在 Azure DevOps 管道中配置环境变量?

标签 .net-core azure-devops environment-variables azure-functions azure-pipelines

我有一个 Azure 函数(.NET Core),它被配置为从 JSON 文件和环境变量中读取应用程序设置:

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 函数中配置为环境变量。一切都按预期工作:

Azure Function application settings

现在的问题是在构建管道中配置其中一些变量,这些变量用于单元和集成测试。我试过如下添加一个变量组并将其链接到管道:

Azure DevOps Task Group

但是没有设置环境变量并且测试失败。我在这里缺少什么?

最佳答案

我也有相同的用例,我希望使用 azure 构建管道设置一些环境变量,以便测试用例可以访问该环境变量以通过测试。
使用 EXPORT,ENV 命令直接设置 env 变量不适用于后续任务,因此要为后续任务设置环境变量,请遵循 https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch 中提到的语法。

带有脚本标签的 task.set 变量

使用构建管道设置 ENV 变量的正确方法

- script: |
    echo '##vso[task.setvariable variable=LD_LIBRARY_PATH]$(Build.SourcesDirectory)/src/Projectname/bin/Release/netcoreapp2.0/x64'
  displayName: set environment variable for subsequent steps

请注意空格,因为它是 yaml。上述脚本标签将变量 LD_LIBRARY_PATH(在 Linux 中用于定义 .so 文件的路径)设置为定义的目录。

这种设置环境变量的风格也适用于后续任务,但是如果我们像下面提到的那样设置 env 变量,那么环境变量将为特定的 shell 实例设置,并且不适用于后续任务。

设置环境变量的错误方式:
- script: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(Build.SourcesDirectory)/src/CorrectionLoop.HttpApi/bin/Release/netcoreapp2.0/x64
  displayName: Set environment variable

您可以使用类似的语法来设置环境变量。

关于.net-core - 如何在 Azure DevOps 管道中配置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56273723/

相关文章:

c# - 如何在作为窗口服务运行的 .NET Core WorkerService 中启用事件日志记录

c# - ASP.NET Core 1.1 无法发布应用

azure - Terraform - Azure 标签格式化问题

android - 如何使用Kotlin DSL Gradle启用代码覆盖?

python - os.environ.get() 使用 Google Cloud Functions 返回 None

batch-file - 如何将 REG 值读入环境变量

c# - 如何过滤JArray?

c# - 使用 ValueTask 等待单个 .NET 事件

ruby - 检测由 RSpec、Ruby 运行的代码

cordova - Cordova 构建任务时获取 "TypeError: file argument must be a non-empty string"