Отключение / включение задачи запуска Azure на основе конфигурации сборки


Я хотел бы включить или отключить запуск задач в зависимости от конфигурации сборки или конфигурации службы. Я надеюсь добиться того, что смогу отключить New Relic в нашей тестовой среде, но включить задачу запуска для рабочей среды и рабочей среды. Разве это возможно?

2 2

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