zoukankan      html  css  js  c++  java
  • ASP.NET Core 从 gitlab-ci 环境变量读取配置

    最近在加强持续集成,遇到一个场景需要通过 gitlab-ci 环境变量(Settings -> Settings -> CI/CD -> Variables )在持续集成时向 ASP.NET Core 应用传递配置。

    在 appsettings.json 中的配置是这样的

    {
      "ossClient": {
        "accessKeyId": "",
        "accessKeySecret": ""
      }
    }

    摆在面前的问题是如何通过环境变量传递上面的配置,并且不需要修改读取配置的代码?

    services.Configure<OssCredential>(configuration.GetSection("ossClient"));

    ASP.NET Core 默认就启用了从环境变量读取配置,在 WebHost.CreateDefaultBuilder() 中包含了 config.AddEnvironmentVariables() ,只要用正确的格式传递配置,就能搞定。

    那问题就剩下一个 —— 在环境变量中以什么样的格式提供 ossClient 的 accessKeyId 与 accessKeySecret 配置?

    在网上找到了一篇解惑的博文 Read Connections Strings & Config Values from Environment Variables

    export ConnectionStrings__default="Server=database-server; Database=Sample; Trusted_Connection=True;"

    原来只需用2个下划线分隔 sectionName 与 key 。

    查看 Microsoft.Extensions.Configuration.EnvironmentVariables 中 EnvironmentVariablesConfigurationProvider 实现源码也确认了这一点。

    private static string NormalizeKey(string key)
    {
        return key.Replace("__", ConfigurationPath.KeyDelimiter);
    }

    使用下面的环境变量配置在实际项目中进行验证,确实有效。

    export ossClient__accessKeyId=XXX
    export ossClient__accessKeySecret=YYY

    在 gitlab-ci 中也验证成功。

    从中实际体验了 ASP.NET Core 强大灵活的配置能力。

  • 相关阅读:
    对象比较
    ObservableCollection<T> 的同类 ListCollectionView
    数据模板--DataTemplate
    ListBox的虚拟可视化技术
    WPF 动画 和 色彩 的随笔
    Binding.RelativeSource 属性
    javascript基础DOM操作
    js dom 操作技巧
    js 内置对象和方法 示例
    javascript 编程技巧
  • 原文地址:https://www.cnblogs.com/dudu/p/9420194.html
Copyright © 2011-2022 走看看