ASP.NET Core 从 gitlab-ci 环境变量读取配置
2018-08-05 11:42
911 查看
最近在加强持续集成,遇到一个场景需要通过 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环境变量和启动设置的配置教程
- ASP.NET Core的配置(1):读取配置信息
- Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(1)
- ASP.NET CORE入门之读取Json配置文件
- ASP .NET CORE 根据环境变量支持多个 appsettings.json
- ASP.NET CORE入门之读取Json配置文件
- ASP.NET Core实现类库项目读取配置文件
- ASP.NET Core开发-读取配置文件Configuration
- Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(2)
- ASP.NET Core轻松入门Bind读取配置文件到C#实例
- ASP.NET Core实现类库项目读取配置文件
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- ASP.NET Core开发-读取配置文件Configuration
- ASP.NET Core轻松入门Bind读取配置文件到C#实例
- 用"hosting.json"配置ASP.NET Core站点的Hosting环境
- 【ASP.NET Core快速入门】(五)命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options
- Asp.net Core中使用Redis 来保存Session, 读取配置文件
- 【无私分享:ASP.NET CORE 项目实战(第六章)】读取配置文件(一) appsettings.json
- 菜鸟入门【ASP.NET Core】5:命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options
- ASP .NET CORE 根据环境变量支持多个 appsettings.json