如何在Azure的CI / CD管道中使用环境变量

时间:2020-01-24 13:10:22

标签: azure-devops continuous-integration azure-pipelines

我正在为.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"
}

2 个答案:

答案 0 :(得分:1)

我们通常在发行版中使用“替换令牌”任务,然后在发行管道中为将替换appsettings.json文件中的令牌的每个环境设置变量。使用和设置非常简单。

更新:

在appsettings.json文件中,您将执行以下操作:

"Username": "#{AccountUser}#"

然后在管道中,进入发布并创建一个名为“ AccountUser”的变量。然后,您将发行版中的Replace Tokens任务用作第一步,它将把appsettings.json文件中的#{AccountUser}#替换为变量的值。为每个范围(开发,阶段,生产或您在发行版中称为环境的任何东西)设置不同的变量,以使appsettings.json文件在每个环境中都获得适当的值。

enter image description here

答案 1 :(得分:0)

更合理的方法是使用您的App Service的应用程序设置,它们将覆盖appsettings.json \ web.config中的值

https://docs.microsoft.com/en-us/azure/app-service/configure-common

这可能需要您对代码进行一些更改:

https://docs.microsoft.com/en-us/azure/app-service/containers/configure-language-dotnetcore#access-environment-variables