最近在加强持续集成,遇到一个场景需要通过 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 环境变量读取配置的更多相关文章

  1. Service Fabric service 根据环境变量读取配置文件

    前言 一个服务或者产品,往往需要三个环境:一个开发环境(Development),一个测试环境(Staging),一个生产环境(Production), 这就不可避免的需要多个配置文件来匹配相应的环境 ...

  2. 用"hosting.json"配置ASP.NET Core站点的Hosting环境

    通常我们在 Prgram.cs 中使用硬编码的方式配置 ASP.NET Core 站点的 Hosting 环境,最常用的就是 .UseUrls() . public class Program { p ...

  3. ASP.NET Core 新建项目 - macOS 环境 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 新建项目 - macOS 环境 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 新建项目 - macOS 环境 对于任何语言和 ...

  4. java之重装系统重新配置环境变量 jdk、eclipse、idea、Oracle、svn、gitlab等环境变量的安装

    前言:由于公司电脑进行统一版本升级,需要重装系统(只对C盘做升级),记录一下踩过的坑! 首先理一下思路,看那些东西需要做: 1.jdk及其环境变量 2.eclipse(文件夹版的需要运行项目进行测试) ...

  5. Spring Boot 环境变量读取 和 属性对象的绑定

    网上看到的一些方法,结合我看到的 和我们现在使用的.整理成此文: 第一种方法 参见catoop的博客之 Spring Boot 环境变量读取 和 属性对象的绑定(尊重原创) 第二种方法 class不用 ...

  6. 基于Windows环境下Myeclipse10.0下载安装破解及jdk的下载安装及环境变量的配置

    jdk的安装及环境变量的配置 1.安装JDK开发环境 附上jdk安装包的百度云链接 链接:http://pan.baidu.com/s/1mh6QTs8 密码:jkb6(当然自行去官网下载最好哒,可以 ...

  7. JDK的安装与Java环境变量的配置详解

    JDK作为JAVA开发的环境,必须在电脑上安装JDK. 1.下载jdk http://rj.baidu.com/soft/detail/14459.html?ald下载jdk最新版jdk-8u11-w ...

  8. Java SE 简介 & 环境变量的配置

    Java SE 简介 & 环境变量的配置 一.Java 技术的三个方向 Java 技术分为三个方向 javaSE( Java Platform Standard Edition 标准版)用来开 ...

  9. java环境搭建系列:JDK环境变量详细配置

    学习java语言,编写java程序,运行java程序,都离不开Java环境的支持,最重要的就是安装JDK,JDK给我提供了java程序的开发环境和运行环境.为了让java程序放在电脑的任意位置都可以执 ...

随机推荐

  1. Coursera, Big Data 3, Integration and Processing (week 1/2/3)

    This is the 3rd course in big data specification courses. Data model reivew 1, data model 的特点: Struc ...

  2. TestNg和spring3测试报错:Failed to read candidate component class-遁地龙卷风

    java.lang.IllegalStateException:Failed to load ApplicationContext Caused by: org.springframework.bea ...

  3. oracle的安装与卸载

    安装oracle: 下载符合系统要求的oracle数据库 2.   将上面的压缩文件都解压到一个文件夹中,然后以管理员的身份运行其中的可执行文件(.exe) 3. 配置安全更新(可选可不选,学习时我没 ...

  4. Visual Studio Code 的使用方法和技巧

    VSCode是微软推出的一款轻量编辑器,采取了和VS相同的UI界面,搭配合适的插件可以优化前端开发的体验. 布局:左侧是用于展示所要编辑的所有文件和文件夹的文件管理器,依次是`资源管理器`,`搜索`, ...

  5. 【原创】运维基础之keepalived

    keepalived 2.0.12 官方:http://www.keepalived.org/ 一 简介 Keepalived is a routing software written in C. ...

  6. Caffe+Matlab'hole

    有时候,多坚持一小下下就成功了,遇到问题就频繁重装系统并不可取!放弃很容易,但坚持真的很酷! 1.安装依赖库也能出问题 命令行输入: sudo apt-get install libprotobuf- ...

  7. bzoj 2780

    后缀自动机的应用 首先我们观察到:如果一个询问串的答案不为0,那么这个串一定是至少一个模式串的子串 如果只有一个模式串,那么这个问题可以简单地用什么东西解决掉(比如普通后缀自动机) 而这里有很多模式串 ...

  8. Ubuntu下 安装MiniGUI

    1. 需要下载的组件 首先需要这些安装包,这些安装包可以在MiniGUI官网上下载. libminigui-gpl-3_0_12.tar.gzmg-samples-3_0_12.tar.gzfreet ...

  9. @PathVariable出现点号"."时导致路径参数截断获取不全的解决办法

    @PathVariable出现点号"."时导致路径参数截断获取不全的解决办法 比如,我路径是/test/{name},name的值是1.2.3.4,后台用@PathVariable ...

  10. Elasticsearch 简单快照备份

    创建仓库 POST http://10.10.14.201:9200/_snapshot/backup { "type": "fs", "settin ...