Как установить переменную в зависимости от стадии ее выпуска в DevOps? - PullRequest
1 голос
/ 13 марта 2019

Есть ли способ, которым я могу легко изменить переменную в приложении React, в зависимости от ее текущего этапа в конвейере выпуска Azure DevOps? В качестве примера, скажем, у меня настроены три этапа (dev / QA / production), и я хочу, чтобы идентификатор клиента в конфигурации аутентификации приложения менялся для каждой среды. Как я могу «определить», какая среда используется в настоящее время, чтобы выбрать соответствующий идентификатор? Я бы предпочел выполнить только одну задачу сборки и использовать один артефакт для каждой стадии конвейера, а не перестраивать на каждой стадии (если это вообще возможно).

Ответы [ 2 ]

1 голос
/ 13 марта 2019

Если вы не хотите связывать для каждого этапа отдельно, вам понадобится сервер, предоставляющий значения, которые вы хотите сделать доступными для клиента.

Это можно сделать путем рендеринга HTML на стороне сервера.,Вот краткий пример шаблона:

<script>
  window.valueToExpose = <%= JSON.stringify(value) %>;
</script>

Выражение <%= JSON.stringify(value) %> будет выполнено механизмом шаблонов вашего сервера.(Выражение может выглядеть по-разному в зависимости от вашего механизма шаблонов)

Сервер, сгенерированный HTML, может выглядеть так с value = "Hello World":

<script>
  window.valueToExpose = "Hello World";
</script>

В приложении React вы можете получить доступ к window.valueToExpose.

0 голосов
/ 04 апреля 2019

Во-первых, я ожидаю, что ваше приложение развернуто на разных хостах / CNAME в зависимости от среды.

Если вы не хотите предоставлять какой-либо идентификатор среды во время развертывания / сборки, который запекается в вашем коде, то проверка URL может быть одним из подходов.Недостатком этого является то, что вы теперь жестко программируете шаблоны URL в своих сценариях и отображаете их в среде.Вы выбираете компромиссы.

Во-вторых, я согласен с ответом Лукаса о том, что вам понадобится внешний источник для конфигураций, которые вы можете использовать во время выполнения.

Если вы живете в экосистеме M $, я не уверен, что доступно, но из других стеков я могу порекомендовать конфигурацию весеннего облака или configrd.io , которая может одновременновывести, обслужить и предоставить дополнительные функции управления конфигурацией.

...