Как использовать переменные среды в CI / CD Pipeline в Azure - PullRequest
0 голосов
/ 24 января 2020

Я создаю конвейер CI / CD в Azure DevOps для .NetCore API, и у меня есть несколько этапов развертывания, таких как QA, UAT и Production. Каждый этап имеет свои собственные настройки, такие как строки подключения к базе данных и многие другие, и у меня есть один файл appsettings. json, в котором я объявил эти настройки, поэтому очень сложно изменить appsettings. json файл каждый раз при развертывании, поэтому мой вопрос заключается в том, как я могу использовать переменные среды в конвейерах CI / CD, чтобы избежать всего этого,

Поскольку мне просто нужно определить значения переменных в разделе переменных и конвейере CD можно автоматически выбрать его из моего набора приложений. 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 ]

1 голос
/ 26 января 2020

Обычно мы используем задачу «Замена токенов» в наших выпусках, а затем устанавливаем переменные в нашем конвейере выпуска для каждой среды, которая будет заменять токены в наших файлах настроек приложения. json. Очень прост в использовании и настройке.

ОБНОВЛЕНИЕ:

В вашем файле appsettings. json вы бы сделали что-то вроде:

"Username": "#{AccountUser}#"

Затем в вашем конвейере вы go войдете в ваш выпуск и создадите переменную с именем "AccountUser". Затем вы используете задачу Replace Tokens в своем выпуске в качестве первого шага, и она заменит # {AccountUser} # в вашем файле appsettings. json на любое значение переменной. Задайте разные переменные для каждого Scope (dev, stage, production или как вы называете свои среды в своем выпуске), чтобы файл appsettings. json получил соответствующее значение для среды.

enter image description here

0 голосов
/ 24 января 2020

более разумным подходом было бы использовать настройки приложения вашей службы приложений, они переопределяли бы значения в 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 -условия среды

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...