Как развернуть приложение реагирования в нескольких средах без нескольких сборок? - PullRequest
1 голос
/ 10 июля 2019

Я настраиваю конвейер CI / CD с помощью DevOps Azure для автоматического развертывания приложения React в нескольких средах.Как я понял, переменные окружения (REACT_APP_ *) используются во время сборки npm.Как настроить этап сборки без создания шага для каждой среды?

Я использую новый ASP.Net Boilerplate проект с интерфейсом React.

.

Вот что у меня есть на данный момент

Я скопировал задачу сборки в package.json, чтобы разрешить несколько сред

"scripts": {
  ...
  "build": "set REACT_APP_ENV=production && react-app-rewired build --scripts-version react-scripts-ts",
  "builduat": "set REACT_APP_ENV=uat && react-app-rewired build --scripts-version react-scripts-ts",
...
}

Затем в моем конвейере CI я продублировал задачу сборки.

- script: yarn builduat
  displayName: '[UAT] Yarn build front-end'
  workingDirectory: $(WorkingDirectoryReact)

- script: yarn build
  displayName: '[PROD] Yarn build front-end'
  workingDirectory: $(WorkingDirectoryReact)

Я не хочу дублировать вещи для каждой среды, так какое же идеальное решение?Я действительно не хочу создавать решение во время CD (фаза развертывания)

1 Ответ

0 голосов
/ 10 июля 2019

Я не слишком разбираюсь в реакции, но ваш подход описан как «построй один раз, разверни много», и это действительно важный аспект процесса релиза.

Бит, который вам не хватает, публикует ваши сборки как артефакты, которые вы затем можете получить в своем конвейере выпуска.

Посмотрите на задачи публикации артефактов: https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/publish-build-artifacts?view=azure-devops

Опубликуйте каждую из ваших сред в отдельных артефактах, а затем подберите их в конвейере выпуска.

...