kochetkov-ma / allure-server

Allure Server. Save/ generate / provide allure2 reports in one place
http://allure.iopump.ru
Apache License 2.0
213 stars 63 forks source link

Проблема при работе сервиса в openshift по relative-url #41

Closed justkru closed 2 years ago

justkru commented 2 years ago

Приветствую. Кейс следующий. Разворачивал этот компонент в Openshift.

Если в Route прописываешь абсолютный путь вида - namespace_name.apps.server.ru - то приложение прекрасно работает, все открывается.

Если же путь относительный - вида namespace_name.apps.server.ru/allure-reports - то выдается ошибка 404 от Tomcat'а.

Может быть у вас будут идеи как все же завести приложение в таком виде?

Заранее огромное спасибо!

justkru commented 2 years ago

SERVER_SERVLET_CONTEXT_PATH - если прописать вот это в переменных окружения, нормально начинает работать UI, но две функции - редирект на reports и на swagger - все равно ее игнорируют.

justkru commented 2 years ago

Скорее всего дело в кастомных редиректах для сваггера и для метода, который репорты отдает. Они почему-то игнорируют SERVER_SERVLET_CONTEXT_PATH и пытаются примапится к / -> получается не namespace_name.apps.server.ru/allure-reports/, а namespace_name.apps.server.ru/* .

Если поможете с подсказкой, буду очень благодарен, могу даже пересобрать контейнер, если надо из сорцов, очень уж ваша сборка к месту пришлась - великолепно реализованы все фичи, не представляете насколько это попадание 10 из 10 :)

justkru commented 2 years ago

Нашел, как починить. Надо поменять 3 места: -> System.setProperty("server.servlet.context-path", "/allure-reports");//NOPMD в Application.java -> return System.getProperty("server.servlet.context-path")+result; в методе String handleTo ServeRedirectHelper.java -> var frame = new IFrame(System.getProperty("server.servlet.context-path")+"/swagger"); в SwaggerView.java

Это такой, quick & dirty фикс, можно потом, конечно, исправить с точки зрения стиля кода (я не джавист, а мультиязычник) :-)

kochetkov-ma commented 2 years ago

Привет! Я тестировал в Kubernetes на Яндекс Облаке - не столкнулся с этой проблемой. Для AWS использовал настройку server.port: ${PORT:8080} Еще есть настройка allure.server-base-url - она участвует в формировании базового url для redirect и view

Я поэкспериментирую и обновлю Helm Chrat (если необходимо) и документацию

В Helm Chart любую переменную можно внести всегда внести в values.yaml в секцию env - она пробросится в deployment

Спасибо большое за исследование!

kochetkov-ma commented 2 years ago

https://github.com/kochetkov-ma/allure-server/releases/tag/v2.11.1