Отключение / включение задачи запуска Azure на основе конфигурации сборки
Я хотел бы включить или отключить запуск задач в зависимости от конфигурации сборки или конфигурации службы. Я надеюсь добиться того, что смогу отключить New Relic в нашей тестовой среде, но включить задачу запуска для рабочей среды и рабочей среды. Разве это возможно?
2 ответа:
Ответ NR_Jacob вдохновил меня, спасибо! Я обнаружил, что вы можете передать настройку роли в пакетный файл. Итак, вы добавляете такую настройку: И укажите значение true или false для каждой отдельной конфигурации службы.
Затем в ServiceDefinition.csdef вы добавляете строки и:
<Task commandLine="newrelic.cmd" executionContext="elevated" taskType="simple"> <Environment> <Variable name="DisableNewRelic"> <RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/ConfigurationSettings/ConfigurationSetting[@name='DisableNewRelic']/@value" /> </Variable> </Environment> </Task>
И в newrelic.cmd добавьте эти строки вверху:
IF "%DisableNewRelic%" == "true" ( ECHO Found setting to disable New Relic, exiting... >> "%RoleRoot%\nr.log" 2>&1 EXIT /B 0 )
@NR_Jacob: вы можете добавить строки newrelic.cmd для вашей кодовой базы? Не помешает иметь такую обстановку, как это в cmd ; -) в противном случае мне пришлось бы делать модификации в newrelic.cmd каждый раз, когда происходит обновление пакета nuget.
Эта статья от Microsoft имеет Хорошее решение для этого типа проблемы. Подведем итог:
Добавьте переменную окружения в определение ServiceDefinition.csdef файл выглядит следующим образом:
<Variable name="ComputeEmulatorRunning"> <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" /> </Variable>
Эта переменная будет иметь значение true, если вы работаете в эмуляторе, или false, если нет. Далее вам нужно будет переделать новую реликвию.cmd-файл, чтобы обернуть весь файл таким образом:
IF "%ComputeEmulatorRunning%" == "true" ( REM This task is running on the compute emulator. Nothing goes here since we want nothing to happen. ) ELSE ( REM This task is running on the cloud. Place the entirety of the newrelic.cmd file in here. )
Это все равно вызовет файл cmd, но помешает ему делать что-либо, кроме как в производство.