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 强大灵活的配置能力。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?
2017-08-05 asp.net core 1.1 项目升级至 asp.net core 2.0 preview 2 与正式版
2015-08-05 通过git rebase修改commit message
2010-08-05 推荐阅读20100805
2010-08-05 博客园已经用上NorthScale Memcached Server
2007-08-05 服务器带宽已升级至40M独享
2004-08-05 共同建设我们的网上家园—博客园新开通“家园建设”区