Вопрос или проблема
Jenkins работает на выделенной машине, с SSL, предоставленным Haproxy.
Jenkins запущен внутри внутренней сети, с URL https://jenkins.company.com, https://jenkins-static.company.com настроен на ту же машину.
Настройки Haproxy как в руководстве по Jenkins (отключение Haproxy и переход на прямой HTTP не решает проблему).
При настройке корневого URL ресурса через “Управление Jenkins >> Система”, все URL артефактов преобразуются в https://jenkins-static.company.com/static-files/TOKEN/FILE_PATH, но попытка открыть ссылку всегда приводит к странице “Упс!” 404.
Я не смог найти никакой связанной информации в логах.
Чтобы заставить URL ресурса работать, мне пришлось добавить разрешение “Чтение Работы” для “Аутентифицированных пользователей” в глобальные настройки для стратегии авторизации на основе проектной матрицы. Но это нарушает безопасность моего экземпляра Jenkins, поэтому это решение нельзя применить.
Ответ или решение
Проблема с 404 ошибками при использовании Resource Root URL в Jenkins с настройкой Project-based Matrix Authorization может быть вызвана несколькими факторами, связанными с правами доступа и конфигурацией адреса.
Шаги для устранения проблемы:
-
Проверьте настройки HAProxy:
Убедитесь, что ваш HAProxy правильно маршрутизирует запросы наhttps://jenkins-static.company.com
. Проверьте, настроен ли он так, чтобы проксировать все обращения к/static-files/
на соответствующий внутренний ресурс Jenkins. Ваша конфигурация HAProxy может выглядеть примерно так:frontend http_front bind *:80 bind *:443 ssl crt /etc/ssl/certs/your_cert.pem acl url_static path_beg /static-files/ use_backend jenkins_static if url_static default_backend jenkins backend jenkins_static server jenkins_static_backend 127.0.0.1:8080 backend jenkins server jenkins_backend 127.0.0.1:8080
-
Проверьте настройки Jenkins:
Убедитесь, что в Jenkins правильно установлены адресаJenkins URL
иJenkins Static URL
. Эти параметры могут находиться в разделеУправление Jenkins
→Настройки системы
. Убедитесь, что они установлены наhttps://jenkins.company.com
иhttps://jenkins-static.company.com
соответственно. -
Проверка прав доступа:
Если вы добавляете разрешение "Job/Read" для "Authenticated Users", это может привести к риску безопасности, так как все аутентифицированные пользователи получат доступ к определённым проектам. Вместо этого:- Создайте отдельную роль для пользователей, которым необходимо видеть артефакты.
- Используйте «Matrix-based security» для более детальной настройки доступа.
Убедитесь, что роли и разрешения настроены правильно для доступа к нужным ресурсам без излишнего раскрытия данных.
-
Проверка логов:
Даже если вы не увидели явных ошибок в логах Jenkins, посмотрите также логи HAProxy. Возможно, там будут указания на то, почему запросы кhttps://jenkins-static.company.com/static-files/...
проваливаются. -
Тестирование без SSL:
Если проблема сохраняется даже когда HAProxy выключен, попробуйте запустить Jenkins без SSL прямо на локальном сервере (например, наhttp://localhost:8080
) и посмотрите, удастся ли вам получить доступ к статическим файлам. Это поможет определить, является ли проблема локальной или связанной с HAProxy. -
Модули и плагины:
Убедитесь, что все плагины Jenkins обновлены до последней версии. Иногда проблемы могут возникать из-за конфликтов или ошибок в устаревших модулях.
Заключение
Если описанные шаги не решают вашу проблему, я рекомендую обратиться к сообществу Jenkins или проверить официальную документацию. Также можно рассмотреть возможность использования более детализированного мониторинга и трассировки запросов для выявления точного места, где происходит ошибка.