Несколько сайтов React в одной учетной записи хранилища Azure

#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:

  1. установите свойство homepage в package.json
 "homepage": "http://localhost:3001/testApp"
  
  1. установите атрибут 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:

Попробуйте следующее:

  1. Добавьте "homepage": ".", в свой package.json, как указано здесь.
  2. Измените 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'