Как развернуть реагирующее приложение в нескольких средах без нескольких сборок?
Я настраиваю конвейер 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 (фаза развертывания)
2 ответа
Наконец-то я создал скрипт PowerShell, который заменит содержимое артефактов сборки.
Все подробности можно найти здесь: https://github.com/Thibaultce/react-azuredevops-buildonce-deploymany
Я не слишком осведомлен о реакции, но ваш подход описан как "построй один раз, разверни много", и это действительно важный аспект твоего процесса релиза.
Недостаток, который вам не хватает, - это публикация ваших сборок как артефактов, которые вы затем можете получить в своем конвейере выпуска.
Посмотрите на задачи публикации артефактов: https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/publish-build-artifacts?view=azure-devops
Опубликуйте каждую из ваших сред для разделения артефактов, а затем подберите их в своем конвейере выпуска.