Jenkins - Плагин для издателя HTML - CSS не отображается, когда отчет просматривается на Jenkins Server
У меня есть странная проблема с плагином Jenkins HTML Publisher, в котором все фантазии CSS, которые я добавил в отчет, удаляются при просмотре в Jenkins. Если я загружу отчет на локальный, я могу видеть форматирование CSS. Есть ли настройка в Jenkins, которая позволяет просматривать CSS?
Настройки моего HTML-издателя в Jenkins:
![введите описание изображения здесь]()
Страница моего отчета, когда отображается в Jenkins:
![введите описание изображения здесь]()
Страница моего отчета при отображении на локальном компьютере:
![введите описание изображения здесь]()
Ответы
Ответ 1
Разобрался с проблемой. Поделиться здесь для других пользователей.
CSS удален из-за политики безопасности контента в Jenkins. (https://wiki. Jenkins- ci.org/display/JENKINS/Configuring+Content+Security+Policy)
Правило по умолчанию установлено на:
sandbox; default-src 'none'; img-src 'self'; style-src 'self';
Этот набор правил приводит к следующему:
- JavaScript вообще не допускается
- Не допускаются плагины (объект/вставка)
- Не допускается использование встроенного CSS или CSS с других сайтов
- Изображения с других сайтов запрещены
- Кадры не допускаются
- Веб-шрифты не разрешены
- Не допускается XHR/AJAX и т.д.
Чтобы ослабить это правило, перейдите к
- Управлять Jenkins->
- Управлять Nodes->
- Нажмите настройки (значок шестеренки) ->
-
щелкните консоль сценария слева и введите следующую команду:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
и нажмите Выполнить. Если вы видите результат как "Результат:" ниже заголовка "Результат", защита отключается. Перезапустите сборку, и вы увидите, что в новых архивированных файлах HTML будет включен CSS.
Ответ 2
В CentOs, чтобы включить изображения в HTML-отчет
sudo vi /etc/sysconfig/jenkins
- установить следующее в
JENKINS_JAVA_OPTION
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;\""
Это будет работать даже после перезапуска сервера Дженкинса.
Директива
default-src: The default-src is the default policy for loading content such as JavaScript, Images, CSS, Fonts, AJAX requests, Frames, HTML5 Media
img-src: Определяет действительные источники изображений.
Исходная стоимость
'self' - Позволяет загружать ресурсы из одного источника (та же схема, хост и порт).
Usage: default-src 'self'
'unsafe-inline' - позволяет использовать встроенные элементы источника, такие как атрибут style, onclick или тела тегов скрипта (зависит от контекста источника, к которому он применяется) и javascript: URI.
Usage: default-src 'unsafe-inline'
"unsafe-eval" - позволяет выполнять небезопасную динамическую оценку кода, например JavaScript eval()
Usage: default-src 'unsafe-eval'
data: - позволяет загружать ресурсы через схему данных (например, изображения в кодировке Base64).
Usage: img-src 'self' data:
Пожалуйста, ознакомьтесь больше с политикой безопасности контента здесь here
Ответ 3
Перейдите в "Управление Jenkins" → "Консоль сценариев" и выполните команду ниже:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
Ответ 4
(Следующее решение для Windows.)
Постоянное исправление заключается в изменении строки в [Jenkins directory]\jenkins.xml
(для меня это при C:\Jenkins\jenkins.xml
)
<executable>java.exe</executable>
<arguments>[arguments are here]</arguments>
Добавьте следующий аргумент в список аргументов, разделенных пробелами:
-Dhudson.model.DirectoryBrowserSupport.CSP=
Затем перезапустите службу Jenkins, чтобы получить изменения.
Ответ 5
Вы можете исправить это, используя команду groovy, как указано в ответе Vall.
Эффект сохраняется до тех пор, пока Дженкинс не перезапустится, и после этого вам придется делать это снова.
Решение этой проблемы состоит в том, чтобы настроить работу, которая будет делать это для вас каждый раз при запуске jenkins.
Вы можете сделать это с помощью плагина Startup Trigger.
После установки создайте новое задание, и у вас будет новый флажок в разделе " Построение триггеров ", который вам нужно будет проверить.
Затем добавьте шаг сборки скрипта Groovy для выполнения системы с помощью команды:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
Сохраните и все должно работать.
Ответ 6
Для версии Ubuntu 14 полезными были специальные плагины:
https://wiki.jenkins-ci.org/display/JENKINS/Startup+Trigger - начать работу по запуску jenkins
https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin - Чтобы запустить System Groovy script
И я выполнил задание, которое начинается с перезапуска Jenkins и устанавливает параметр.
![установить, чтобы начать сборку после запуска Jenkins]()
И добавлена система Groovy script для установки параметра.
System.setProperty( "hudson.model.DirectoryBrowserSupport.CSP", "sandbox; img-src 'self';" )
Ответ 7
Идти к
Управление Jenkins → Консоль скриптов
и введите следующую команду:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
затем нажмите Run. если вы получите результат как "Результат", то повторно запустите сборку, проверьте формат отчета HTML
Ответ 8
Уже слишком поздно, чтобы ответить, но думал, чтобы поделиться.
Я боролся с Jenkins, развернутым на Tomcat, пытался выполнить скрипт, это помогает, но уходит, если перезагрузить tomcat.
Сделано постоянное исправление, установив свойство в catalina.properties в tomcat.
Файл свойств: tomcat_installation_dir/conf/catalina.properties Просто скопируйте и вставьте строку ниже в последний раз в catalina.properties (вы можете установить его где угодно, только чтобы не связываться с существующими свойствами)
-Dhudson.model.DirectoryBrowserSupport.CSP = ""
Ответ 9
У меня были те же проблемы после добавления HTTPS к моим Jenenkins. В случае, если у вас возникла та же проблема, решение простое - установите свой URL-адрес Jenkins на использование протокола HTTPS вместо HTTP. Это можно настроить через конфигурацию jenkins → url jenkins
Ответ 10
Для постоянной настройки создайте файл сценария Groovy $ JENKINS_HOME/init.groovy или любой файл .groovy в каталоге $ JENKINS_HOME/init.groovy.d/ со следующим содержимым:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-scripts; default-src 'self'; img-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline';")
Systemctl перезагрузить Дженкинс
https://wiki.jenkins.io/display/JENKINS/Post-initialization+script
Ответ 11
Чтобы установить системное свойство постоянно при использовании Jenkins-X, создайте файл myvalues.yaml
в текущем каталоге со следующим содержимым:
jenkins:
Master:
JavaOpts: >
-Dhudson.model.DirectoryBrowserSupport.CSP=
Затем перезапустите платформу jenkins-x, что можно сделать, обновив ее:
$ jx upgrade platform --always-upgrade
# Presumably jx.exe is used if on Windows (not tested)
Чтобы не обновлять платформу, просто принудительно обновите ее до той же версии:
$ version=$(jx version --no-version-check\
| grep 'jenkins x platform' | sed -e 's/^jenkins.\+ //')
$ jx upgrade platform --version ${version} --always-upgrade
Ответ 12
В Debian/Ubuntu, настройки aptitude:
-
sudo vi /etc/default/jenkins
- Добавьте
-Dhudson.model.DirectoryBrowserSupport.CSP=
в JAVA_ARGS
(например, JAVA_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP="
)
- Перезапустить jenkins -
service jenkins restart
Этого было достаточно для меня, но для полного списка параметров см. этот ответ.