我正在为.NetCore API在Azure DevOps中创建CI / CD管道,并且我有多个部署阶段,例如QA,UAT和Production。每个阶段都有其自己的设置,例如数据库连接字符串和许多其他设置,并且我有一个 appsettings.json 文件,在其中声明了这些设置,因此更改 appsettings.json 非常困难。每次部署时都要使用“ strong>文件”,所以我的问题是如何在CI / CD管道中使用环境变量来避免所有这些问题,
我只需要在变量部分定义变量值,CD管道就可以从我的appsetting.json文件中自动选择它。
appsetting.json 文件
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"SubscriptionClientName": "api",
"MessageBrokerRetryCount": 5,
"ConnectionStrings": {
"CaseDBConnectionString": "Server=db-server;Database=api_db;User ID=user;pwd =Password;"
},
//For Dev
"MessageBrokerConnection": "ip",
"MessageBrokerUserName": "john",
"MessageBrokerPassword": "john"
}
答案 0 :(得分:1)
我们通常在发行版中使用“替换令牌”任务,然后在发行管道中为将替换appsettings.json文件中的令牌的每个环境设置变量。使用和设置非常简单。
更新:
在appsettings.json文件中,您将执行以下操作:
"Username": "#{AccountUser}#"
然后在管道中,进入发布并创建一个名为“ AccountUser”的变量。然后,您将发行版中的Replace Tokens任务用作第一步,它将把appsettings.json文件中的#{AccountUser}#替换为变量的值。为每个范围(开发,阶段,生产或您在发行版中称为环境的任何东西)设置不同的变量,以使appsettings.json文件在每个环境中都获得适当的值。
答案 1 :(得分:0)
更合理的方法是使用您的App Service的应用程序设置,它们将覆盖appsettings.json \ web.config中的值
https://docs.microsoft.com/en-us/azure/app-service/configure-common
这可能需要您对代码进行一些更改: