Математическая математика с плавающей запятой такова. В большинстве языков программирования он основан на стандарте IEEE 754 . JavaScript использует 64-битное представление с плавающей запятой, которое совпадает с Java double
. Суть проблемы состоит в том, что числа представлены в этом формате как целое число раз в два раза; рациональные числа (такие как 0.1
, который является 1/10
), знаменатель которого не является степенью двух, не могут быть точно представлены.
Для 0.1
в стандартном формате binary64
представление может записывается в точности как
0.1000000000000000055511151231257827021181583404541015625
в десятичной форме или 0x1.999999999999ap-4
в нотации C99 hexfloat . Напротив, рациональное число 0.1
, которое является 1/10
, может быть записано точно как
0.1
в десятичной форме или 0x1.99999999999999...p-4
в аналоге обозначения гексафлоата C99, где ...
представляет собой бесконечную последовательность 9. Константы 0.2
и 0.3
в вашей программе также будут приближенными к их истинные ценности. Бывает, что ближайший double
до 0.2
больше, чем рациональное число 0.2
, но ближайший double
до 0.3
меньше, чем рациональное число 0.3
. Сумма 0.1
и 0.2
заканчивается выше, чем рациональное число 0.3
и, следовательно, не согласуется с константой в вашем коде.
Достаточно полное рассмотрение арифметических вопросов с плавающей запятой Что каждый компьютерный ученый должен знать о арифметике с плавающей точкой . Для более простого объяснения см. floating-point-gui.de .
Для версии Ubuntu 14 полезными были специальные плагины:
https://wiki.jenkins-ci.org/display/JENKINS/Startup+Trigger - начать работу над jenkins startup
https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin - запустить сценарий системы Groovy
И я выполнил задание, которое начинается с перезапуска Jenkins и устанавливает параметр.
Добавлена система Groovy script для установки параметра. System.setProperty ("hudson.model.DirectoryBrowserSupport.CSP", "sandbox; img-src 'self';")
Перейти к
Управление Jenkins -> Консоль скрипта
blockquote>и введите следующую команду:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
затем нажмите «Выполнить». если вы получите результат как «Результат», затем запустите сборку, чтобы проверить формат отчета HTML
У меня были те же проблемы после добавления HTTPS к моим jenkins. В случае, если у вас возникла такая же проблема, решение очень просто - установите URL-адрес Jenkins для использования протокола HTTPS вместо HTTP. Его можно настроить с помощью конфигурации jenkins -> jenkins url
В Debian / Ubuntu в установках aptitude :
sudo vi /etc/default/jenkins
-Dhudson.model.DirectoryBrowserSupport.CSP=
в JAVA_ARGS
(например, JAVA_ARGS="-Dhudson.model.DirectoryBrowserSupport.CSP="
) service jenkins restart
Этого было достаточно для меня, но для полного списка параметров см. этот ответ .
Вы можете исправить это, используя команду groovy, как указано в ответе Vall .
Эффект действует до тех пор, пока Дженкинс не перезапустится, а затем вам придется снова это сделать .
Решение для решения этой проблемы состоит в том, чтобы настроить задание, которое будет делать это для вас каждый раз, когда запускается jenkins.
Вы можете сделать это, используя плагин Startup Trigger .
После того, как вы установите его, создайте новое задание, и у вас будет новый флажок в разделе «Сборка триггеров», который вам нужно будет проверить.
Затем добавьте команду «Выполнение». Шаг сборки скрипта Groovy с командой:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
Сохранить и все должно работать.
Слишком поздно реагировать, но мы решили поделиться.
Я боролся с Дженкинсом, развернутым на Tomcat, пытался выполнить скрипт, он помогает, но уходит, если tomcat перезагружен.
Сделано постоянное исправление, установив свойство в catalina.properties в tomcat.
Файл свойств: tomcat_installation_dir / conf / catalina.properties Просто скопируйте в конец ссылку в каталинии. Свойства в последний раз (вы можете установить это где угодно, просто чтобы не возиться с существующими свойствами)
-Dhudson.model.DirectoryBrowserSupport.CSP = ""
В CentOs для включения изображений в html-отчете
sudo vi /etc/sysconfig/jenkins
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' data:;\""
Это будет работать даже после перезапуска сервера jenkin.
Директива
default-src: По умолчанию-src является политикой по умолчанию для загрузка контента, такого как JavaScript, изображения, CSS, шрифты, запросы AJAX, фреймы, HTML5 Media
img-src: Определяет допустимые источники изображений.
blockquote>Исходное значение
'self' - Позволяет загружать ресурсы с одного и того же источника (та же схема, хост и порт).
Использование:
default-src 'self'
'unsafe-inline' - Позволяет использовать встроенные исходные элементы, такие как атрибут стиля, onclick или тела тега сценария (зависит от контекста источника он применяется к) и javascript: URI.
Использование:
default-src 'unsafe-inline'
'unsafe-eval' - Позволяет небезопасную динамическую оценку кода, такую как JavaScript eval ()
Использование:
default-src 'unsafe-eval'
data: - Позволяет загружать ресурсы через схему данных (например, изображения с кодировкой Base64).
Использование:
< / blockquote>img-src 'self' data:
Подробнее о политике безопасности контента см. здесь
Перейдите в «Управление Jenkins» -> «Консоль скрипта» Введите и выполните команду ниже:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
(Следующее решение для Windows.)
Постоянное исправление заключается в изменении строки в [Jenkins directory]\jenkins.xml
(для меня это в C:\Jenkins\jenkins.xml
)
<executable>java.exe</executable>
<arguments>[arguments are here]</arguments>
Добавьте следующий аргумент в список аргументов, разделенных пробелами:
-Dhudson.model.DirectoryBrowserSupport.CSP=
Затем перезапустите службу Jenkins, чтобы получить изменение.
Выяснил проблему. Разделяйте его здесь для других пользователей.
CSS лишен из-за политики безопасности контента в Jenkins. ( https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy )
Правило по умолчанию установлено на:
sandbox; default-src 'none'; img-src 'self'; style-src 'self';
Этот набор правил приводит к следующему:
Чтобы отменить это правило, откройте «Управление консолью Jenkins-> Script» и введите следующую команду:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
и нажмите «Выполнить». Если вы видите результат как «Результат:» ниже заголовка «Результат», тогда защита отключена. Повторно запустите свою сборку, и вы увидите, что новые архивы HTML будут иметь CSS.