#reactjs #azure #url-rewriting #azure-storage #azure-cdn
#reactjs #azure #переписывание URL #azure-хранилище #azure-cdn
Вопрос:
Необходимо улучшить наш процесс CI / CD для нашего приложения React. Суть в том:
- любая фиксация в любой ветви git, кроме ветвей выпуска и master, должна запускать процесс сборки / развертывания в учетной записи хранилища Azure, которая в настоящее время настроена как статический сайт и связана с конечной точкой CDN (стандарт Microsoft).
- местом назначения развертывания должно быть {rootUrl}/{branchName}
Итак, мы хотим иметь несколько приложений React в одной учетной записи хранения / конечной точке CDN. Это позволило бы нашей команде контроля качества тестировать функции независимо.
Я уже внес следующие изменения в приложение, которые позволяют приложению работать с использованием относительного пути на localhost:
- установите свойство homepage в package.json
"homepage": "http://localhost:3001/testApp"
- установите атрибут basename маршрутизатора
<Router basename={process.env.RELATIVE_ROOT_URL} {...props}>
...
3). добавьте строку в файл .env:
RELATIVE_ROOT_URL=/testApp
Но я понятия не имею, как изменить правило перезаписи URL для конечной точки CDN, чтобы разрешить открывать URL-адреса, такие как {rootUrl} / {branchName} /somepath / напрямую.
P.S. В настоящее время у нас есть следующее правило, которое хорошо работает для одного сайта на конечную точку CDN:
Условие:
- Если расширение файла URL
- Оператор: не более
- Расширение: 0
- Преобразование регистра: нет
Экшен:
- Затем URL переписать
- Исходный шаблон: /
- Назначение: /index.html
- Сохранить непревзойденный путь: Нет
Комментарии:
1. у вас была возможность попробовать мой ответ?
Ответ №1:
Попробуйте следующее:
- Добавьте
"homepage": ".",
в свой package.json, как указано здесь. - Измените
Router
наHashRouter
и удалитеbasename
атрибут.
Вот мой пример из этого репозитория.
Я развертываю с помощью следующей команды:
az storage blob upload-batch
--account-name $(AZURE_STORAGE_ACCOUNT)
--account-key $(AZURE_STORAGE_KEY)
-s ./build/.
-d '$web/product/book-shelves'