如何在 Azure DevOps 管道中配置环境变量?

Rui*_*mba 7 environment-variables .net-core azure-devops 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>();
Run Code Online (Sandbox Code Playgroud)

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": "..."
  }
}
Run Code Online (Sandbox Code Playgroud)

其中一些设置在 Azure 函数中配置为环境变量。一切都按预期工作:

Azure Function 应用程序设置

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

Azure DevOps 任务组

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

Shu*_*ogi 12

我也有相同的用例,我希望使用 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
Run Code Online (Sandbox Code Playgroud)

请注意空格,因为它是 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
Run Code Online (Sandbox Code Playgroud)

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