Подтвердить что ты не робот

Jenkins - Плагин для издателя HTML - CSS не отображается, когда отчет просматривается на Jenkins Server

У меня есть странная проблема с плагином Jenkins HTML Publisher, в котором все фантазии CSS, которые я добавил в отчет, удаляются при просмотре в Jenkins. Если я загружу отчет на локальный, я могу видеть форматирование CSS. Есть ли настройка в Jenkins, которая позволяет просматривать CSS?

Настройки моего HTML-издателя в Jenkins:

введите описание изображения здесь

Страница моего отчета, когда отображается в Jenkins:

введите описание изображения здесь

Страница моего отчета при отображении на локальном компьютере:

введите описание изображения здесь

4b9b3361

Ответ 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 и т.д.

Чтобы ослабить это правило, перейдите к

  1. Управлять Jenkins->
  2. Управлять Nodes->
  3. Нажмите настройки (значок шестеренки) ->
  4. щелкните консоль сценария слева и введите следующую команду:

    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 для установки параметра. Запустить систему  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

Этого было достаточно для меня, но для полного списка параметров см. этот ответ.