码迷,mamicode.com
首页 > Web开发 > 详细

ASP.NET Core 从 gitlab-ci 环境变量读取配置

时间:2018-08-05 13:02:49      阅读:351      评论:0      收藏:0      [点我收藏+]

标签:应用   exp   问题   configure   idt   这一   读取配置   查看   net   

最近在加强持续集成,遇到一个场景需要通过 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 强大灵活的配置能力。

ASP.NET Core 从 gitlab-ci 环境变量读取配置

标签:应用   exp   问题   configure   idt   这一   读取配置   查看   net   

原文地址:https://www.cnblogs.com/dudu/p/9420194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!