【问题标题】:Azure Pipeline Unit Tests & Environment VariablesAzure 管道单元测试和环境变量
【发布时间】:2020-04-23 10:26:02
【问题描述】:

正在努力寻找另一个问题的答案。我在单元测试中有以下代码(变量名已更改)。此信息用于我的集成测试

var configuration = new ConfigurationBuilder()
                .SetBasePath(Environment.CurrentDirectory)
                .AddEnvironmentVariables()
                .AddUserSecrets<MyTestTests>()
                .Build();

var option= new Option();

option.x1 = configuration.GetValue<string>("Option:x1");
option.x2 = configuration.GetValue<string>("Option:x2");
option.x3 = configuration.GetValue<string>("Option:x3");
option.x3= configuration.GetValue<string>("Option:x4");

return option;

当我的单元测试在本地运行时,这在本地运行良好。但是,当我的集成测试在 Azure Pipeline 中运行时,它不会获取环境变量。

我以以下格式创建它们

option__x1 其中 _ 是双下划线。

如果环境变量是开放的,那么它可以工作,但是,如果它们被设置为秘密,那么它就不起作用。

有人知道吗?

【问题讨论】:

    标签: azure unit-testing azure-pipelines


    【解决方案1】:

    Azure 管道单元测试和环境变量

    此行为旨在保护秘密变量不被暴露在任务中。

    This documentation 声明秘密变量是:

    • 未解密为环境变量。因此,默认情况下,您的构建步骤运行的脚本和程序不会被授予访问权限。
    • 已解密以供您的构建步骤访问。因此,您可以在密码参数中使用它们,也可以将它们显式传递到脚本或
      构建步骤中的程序(例如 $(password))。

    这就是你不能在你的任务中使用秘密变量的原因。

    要解决这个问题,我们需要显式映射秘密变量:

    variables:
     GLOBAL_MYSECRET: $(mySecret) 
     GLOBAL_MY_MAPPED_ENV_VAR: foo 
    
    steps:
    
    - powershell: |
    
      env:
        MY_MAPPED_ENV_VAR: $(mySecret) # right way to map to an env variable
    

    您可以查看this threadthe document 了解更多详细信息。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-09-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 2022-10-05
      • 2017-08-09
      • 1970-01-01
      • 2022-01-03
      • 2020-11-03
      相关资源
      最近更新 更多