2016-08-04 2 views
5

Im в настоящее время пытается использовать файл launchSettings.json для управления переменными окружения из приложения, так что мой Setup.cs файл может управлять средами на пути env.IsDevelopmentEnvironment() и т.д..Net Жила - набор переменных окружения в Azure Задача развертывания

Мой вопрос таков: в VSTS, как мне настроить настройку переменной окружения ASPNETCORE_ENVIRONMENT на задачу Azure Deployment? Или он должен попасть в задание dotnet publish, которое у меня есть на моих этапах сборки?

Любая помощь была бы принята с благодарностью. Если мне нужно предоставить дополнительную информацию, сообщите мне, поскольку я также не уверен, что то, что я предоставил, достаточно, чтобы сделать вопрос понятным.

Приветствия,

Адам

+0

Итак, вы хотите обновить значение переменной «ASPNETCORE_ENVIRONMENT» в файле «launchSettings.json» до его развертывания? –

+0

Вид да. Я пытаюсь передать то, что я пытаюсь сделать. В принципе, при настройке задачи сборки (или задачи выпуска) в vsts, я хочу установить переменную ASPNETCORE_ENVIRONMENT в этой точке, поэтому при ее развертывании она по существу является «правильной» средой. в основном, вроде того, как web.config преобразует работу. Имеет ли это смысл? –

+0

Его также вполне возможно, что я смотрю на это совершенно неправильно. Учитывая @set s ответ ниже, мне интересно, должен ли я настраивать сайт с переменной среды, предварительно сконфигурированной, и просто использовать для этого. –

ответ

8

Причина ASPNETCORE_ENVIRONMENT это переменная окружения, вы можете просто указать его на Azure. См. Ответ SO на странице How and where to define an environment variable on azure?

+0

ah thanks, thats супер близко к тому, что после. моя точка в том, как я устанавливаю это при развертывании/времени сборки из VSTS :) спасибо за ответ! –

+0

@AdamGrande Вы когда-нибудь находили способ сделать это с VSTS? Я бы действительно хотел установить все мои настройки приложения через переменные среды. Учитывая, что env vars, которые соответствуют правильному соглашению об именах, будут эффективно переопределять значения appsettings.json, это устранит необходимость в токенизации второго json-файла или аналогичного. – Matthew

+0

Чтобы подчеркнуть этот ответ, это также то, что предлагает официальная документация для Azure: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments#setting-the-environment – Daniel

0

Вы можете установить расширение Replace Token, а затем добавить задачу «Заменить токен» в определении сборки/выпуска. Эта задача может заменить строки в файле значением переменной, которое вы добавили в определении сборки/выпуска.

1

Если вы хотите, чтобы ваш процесс развертывания идемпотент, я бы предложил использовать этот шаг развертывания для установки в Azure Web App.

https://marketplace.visualstudio.com/items?itemName=pascalnaber.PascalNaber-Xpirit-WebAppConfiguration

Технически это добавляет параметры высвобождения в web.config, а также, что не является необходимым для основного приложения, но, что важно, он также устанавливает переменные среды для хоста Azure.

условия, что вы указали использовать переменные окружения в вашем Startup.cs:

public Startup(IHostingEnvironment env) 
    { 
     var builder = new ConfigurationBuilder() 
         .SetBasePath(env.ContentRootPath) 
         .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)        
         .AddEnvironmentVariables(); //override settings with environment variables 

     var config = builder.Build(); 

     Configuration = config; 

    } 

Итак, если у вас есть переменная выпуска: appsetting.ASPNETCORE_ENVIRONMENT = Release, вы обнаружите, что $ ENV: ASPNETCORE_ENVIRONMENT действительно будет «Release», если вы проверяете консоль PowerShell на Kudu.

Я использую это расширение, чтобы переопределить все мои переменные appsettings.json, а также ASPNETCORE_ENVIRONMENT во время релиза, а не tokenzing некоторые настройки appsettings. {Environment} .json. Я могу просто переопределить переменные среды, используя правильное соглашение об именах в своих именах VSTS Release Variable.

Например, если мой appsettings.json имеет такую ​​структуру:

{ 
 
    settings: { 
 
    secret: { 
 
     foo: "bar" 
 
    } 
 
    } 
 
}

можно переопределить с переменным высвобождением, такие как:

appsetting.settings: секрет: Foo = "bar"

Затем перейдите в систему $ env: settings: secret: foo в Azure Web App после развертывания

Не делая ничего лишнего в моем источнике или не убирая пакет развертывания сети, подписывая файл конфигурации, а затем повторно зацикливая до msdeploy, у меня есть настройки, зависящие от среды.

Смежные вопросы