Плагин анализатора лога Jenkins - страница журнала анализируемой консоли не показывает Загрузка, запрещенная X-Frame-Options, не позволяет создавать кадры ERR_BLOCKED_BY_RESPONSE
Дженкинс версия: 1.642.3 или 2.32.3
Дженкинс машина Ubuntu 14.04
Плагин парсера логов: 2.0
Просматривая Jenkins с моего компьютера Mac OS sierra.
В глобальной конфигурации Jenkins я создал новую запись (описание и путь к файлу (полный), где файл содержит следующее содержимое).
error /ERROR: Couldn't find any revision to build./
error /SyntaxError: Use of const in strict mode./
error /svn: E220003: /
error /npm ERR! fetch failed/
error /ERROR: Found inconsistencies/
error /ERROR: svn up failed for /
error /rsync error: /
warning /WARNING: /
warning /npm WARN retry/
warning /svn: E200033: /
warning /: binary operator expected/
warning /: too many arguments/
warning /: No such file or directory/
info /rsync: failed to set times on/
info /svn: E170001: /
Я создал тестовое задание и поймал все эти случаи (как указано выше) внутри задания post-build
В разделе я включил "Разбор выходных данных консоли (сборка журнала)", выбрав ту же запись файла анализа журнала (выбор списка). Я запустил сборку и, как и ожидалось, это не удалось.
Build step 'Console output (build log) parsing' changed build result to FAILURE
Нажав на Parsed Console Output (левая боковая панель), вы попадете на страницу, не предоставив мне никакой значимой информации.
Когда я наведу указатель мыши на указанную выше ссылку на боковую панель, она показывает, что Дженкинс ищет https:/../parsed_console URL-адрес для данного номера сборки задания (как видно из адресной строки изображения выше).
Чего мне не хватает здесь, чтобы получить страницу Parsed Console Output со всеми панелями "Ошибки, предупреждения и информация", например, что этот плагин утверждает, что предоставляет здесь: https://wiki.jenkins.io/download/attachments/43713289/parsed_console_output_3.JPG?version=1&modificationDate=1271216347000&api=v2
PS:
Внутри моего $JENKINS_HOME (на master), в папке плагинов, я вижу файл "log-parser.hpi" (последний файл и SHA совпадают с тем, что я вижу, если я загружаю его на свой локальный компьютер Mac). Во время перезапуска Jenkins я не вижу журналов ошибок, связанных с этим плагином.
В папке $ JENKINS_HOME / jobs // builds / задания Дженкинса я вижу действительные файлы журнала *.html с допустимым размером (они читаются этим плагином, чтобы показать информацию, когда вы нажимаете на ссылку боковой панели "Parsed Console Output").
Просмотр log_ref.html показывает действительные ссылки.
jenkins@jenkins-master:/opt/data/jenkins/jobs/testing_log_parser_testing/builds/14$ ls -ltr
total 40
-rw-r--r-- 1 jenkins jenkins 6 Aug 21 13:47 changelog.xml
-rw-r--r-- 1 jenkins jenkins 3145 Aug 21 13:47 log_content.html
-rw-r--r-- 1 jenkins jenkins 945 Aug 21 13:47 logwarningLinks.html
-rw-r--r-- 1 jenkins jenkins 4022 Aug 21 13:47 log_ref.html
-rw-r--r-- 1 jenkins jenkins 267 Aug 21 13:47 loginfoLinks.html
-rw-r--r-- 1 jenkins jenkins 277 Aug 21 13:47 log.html
-rw-r--r-- 1 jenkins jenkins 1130 Aug 21 13:47 logerrorLinks.html
-rw-r--r-- 1 jenkins jenkins 2315 Aug 21 13:47 log
-rw-r--r-- 1 jenkins jenkins 1089 Aug 21 13:47 injectedEnvVars.txt
-rw-r--r-- 1 jenkins jenkins 2391 Aug 21 13:47 build.xml
jenkins@jenkins-master:/opt/data/jenkins/jobs/testing_log_parser_testing/builds/14$ cat -n loginfoLinks.html
1 <li>1 <a target="content" href="log_content.html#INFO1"><span style="color:blue">rsync: failed to set times on/</span></a></li><br/>
2 <li>2 <a target="content" href="log_content.html#INFO2"><span style="color:blue">svn: E170001: Auth reqd i guess</span></a></li><br/>
jenkins@jenkins-master:/opt/data/jenkins/jobs/testing_log_parser_testing/builds/14$ cat -n logwarningLinks.html
1 HEADER HERE: #0
2 <li>1 <a target="content" href="log_content.html#WARNING1"><span style="color:orange">WARNING: are not that bad actually</span></a></li><br/>
3 <li>2 <a target="content" href="log_content.html#WARNING2"><span style="color:orange">npm WARN retry -- won't do any good</span></a></li><br/>
4 <li>3 <a target="content" href="log_content.html#WARNING3"><span style="color:orange">svn: E200033: db locked again?? no way</span></a></li><br/>
5 <li>4 <a target="content" href="log_content.html#WARNING4"><span style="color:orange">: binary operator expected -- lol</span></a></li><br/>
6 <li>5 <a target="content" href="log_content.html#WARNING5"><span style="color:orange">: too many arguments - check the usage please</span></a></li><br/>
7 <li>6 <a target="content" href="log_content.html#WARNING6"><span style="color:orange">: No such file or directory comes whenever you are looking for something which doesn't exist atm</span></a></li><br/>
jenkins@jenkins-master:/opt/data/jenkins/jobs/testing_log_parser_testing/builds/14$ cat log_ref.html
<!DOCTYPE html>
<html>
<head>
<title>log-parser plugin page</title>
<link type="text/css" rel="stylesheet" href="https://jenkins-master.company.com/jenkins_instance01/css/style.css" />
<link type="text/css" rel="stylesheet" href="https://jenkins-master.company.com/jenkins_instance01/css/color.css" />
</head>
<body>
<script type="text/javascript">
function toggleList(list){
element = document.getElementById(list).style;
element.display == 'none' ? element.display='block' : element.display='none';
}
</script>
<img src="https://jenkins-master.company.com/jenkins_instance01///static/a8e7a2ad/images/16x16/red.gif" style="margin: 2px;" width="24" alt="Error Icon" height="24" />
<a href="javascript:toggleList('Error')" target="_self"><STRONG>Error (7)</STRONG></a><br />
<ul id="Error" style="display:none; margin-left:0; padding-left:3em">
<a target="content" href="log_content.html">Beginning of log</a>
<br/>(7 Errors in this section)<br/>
<li>1 <a target="content" href="log_content.html#ERROR1"><span style="color:red">1 ERROR: Couldn't find any revision to build <= this is an error</span></a></li><br/>
<li>2 <a target="content" href="log_content.html#ERROR2"><span style="color:red">SyntaxError: Use of const in strict mode <= this is another type of error (syntax)</span></a></li><br/>
<li>3 <a target="content" href="log_content.html#ERROR3"><span style="color:red">svn: E220003: Unable to connect to a repository at URL</span></a></li><br/>
<li>4 <a target="content" href="log_content.html#ERROR4"><span style="color:red">svn: E220003: Invalid authz configuration</span></a></li><br/>
<li>5 <a target="content" href="log_content.html#ERROR6"><span style="color:red">npm ERR! fetch failed-- fetch may be?</span></a></li><br/>
<li>6 <a target="content" href="log_content.html#ERROR7"><span style="color:red">ERROR: svn up failed for --- well why not switch to Git/Hg</span></a></li><br/>
</ul>
<img src="https://jenkins-master.company.com/jenkins_instance01///static/a8e7a2ad/images/16x16/yellow.gif" style="margin: 2px;" width="24" alt="Warning Icon" height="24" />
<a href="javascript:toggleList('Warning')" target="_self"><STRONG>Warning (6)</STRONG></a><br />
<ul id="Warning" style="display:none; margin-left:0; padding-left:3em">
<a target="content" href="log_content.html">Beginning of log</a>
<br/>(6 Warnings in this section)<br/>
<li>1 <a target="content" href="log_content.html#WARNING1"><span style="color:orange">WARNING: are not that bad actually</span></a></li><br/>
<li>2 <a target="content" href="log_content.html#WARNING2"><span style="color:orange">npm WARN retry -- won't do any good</span></a></li><br/>
<li>3 <a target="content" href="log_content.html#WARNING3"><span style="color:orange">svn: E200033: db locked again?? no way</span></a></li><br/>
<li>4 <a target="content" href="log_content.html#WARNING4"><span style="color:orange">: binary operator expected -- lol</span></a></li><br/>
<li>5 <a target="content" href="log_content.html#WARNING5"><span style="color:orange">: too many arguments - check the usage please</span></a></li><br/>
<li>6 <a target="content" href="log_content.html#WARNING6"><span style="color:orange">: No such file or directory comes whenever you are looking for something which doesn't exist atm</span></a></li><br/>
</ul>
<img src="https://jenkins-master.company.com/jenkins_instance01///static/a8e7a2ad/images/16x16/blue.gif" style="margin: 2px;" width="24" alt="Info Icon" height="24" />
<a href="javascript:toggleList('Info')" target="_self"><STRONG>Info (2)</STRONG></a><br />
<ul id="Info" style="display:none; margin-left:0; padding-left:3em">
<li>1 <a target="content" href="log_content.html#INFO1"><span style="color:blue">rsync: failed to set times on/</span></a></li><br/>
<li>2 <a target="content" href="log_content.html#INFO2"><span style="color:blue">svn: E170001: Auth reqd i guess</span></a></li><br/>
</ul>
</body>
</html>
После дальнейшего изучения исходного кода GitHub (файл LogParserParser.java) для этого плагина и того, что у меня есть в папке $JENKINS_HOME/jobs// jobss builds // моей работы Дженкинса, я обнаружил, что файл log.html может быть неправильным. Не уверен, почему он ссылается на build.log (как href), хотя в файловой системе такого файла НЕТ. PS: <frame src=....
ссылается на файлы log_ref и log_content.html, и они оба отображаются нормально).
<frameset cols="270,*">
<frame src="log_ref.html" scrolling=auto name="sidebar">
<frame src="log_content.html" scrolling=auto name="content">
<noframes>
<p>Viewing the build report requires a Frames-enabled browser</p>
<a href='build.log'>build log</a>
</noframes>
</frameset>
Эта строка показывает, что переменная parsedLogURL указывает на log.html. https://github.com/jenkinsci/log-parser-plugin/blob/1cc883708524e33792d410a109e6cb69a4c0439b/src/main/java/hudson/plugins/logparser/LogParserParser.java#L162
Просмотр: https://<jenkins_server>/<instance>/job/<job_name>/<someBuildNumber>/parsed_console
(как указано Parsed Console Output
ссылка на боковую панель ничего не дает) и https://<jenkins_server>/<instance>/job/<job_name>/<someBuildNumber>/parsed_console/log.html
(отображает только вертикальную линию BAR (она перемещается) между 2 кадрами, НО ничего для содержимого в этих 2 кадрах (log_ref.html и log_content.html))
В Firefox: страница "Проверка" в браузере на моем компьютере Mac содержит ссылку на боковую панель "Parsed Console Output" (имеется в виду: https://<jenkins_server>/<instance>/job/<job_name>/<someBuildNumber>/parsed_console
) показывает следующие строки в Inspect page > Console
раздел.
Load denied by X-Frame-Options: https://<jenkins_server>/<jenkins_instance>/job/<job_name>/<build_number>/parsed_console/log.html does not permit framing. (unknown)
Если я просматриваю https://<jenkins_server>/<instance>/job/<job_name>/<someBuildNumber>/parsed_console/log.html
тогда я получаю следующие строки в Inspect page > Console
окно:
https://<jenkins_server>/<jenkins_instance>/job/<job_name>/<build_number>/parsed_console/log_ref.html does not permit framing. (unknown)
Load denied by X-Frame-Options: https://<jenkins_server>/<jenkins_instance>/job/<job_name>/<build_number>/parsed_console/log_content.html does not permit framing. (unknown)
В хроме занимаюсь Inspect
на странице отображаются следующие ошибки (Отказано в отображении / frame, поскольку для параметра 'X-Frame-Options' установлено значение 'deny' / net::ERR_BLOCKED_BY_RESPONSE):
Refused to display 'https://<jenkins_server>/<jenkins_instance>/job/<jobname>/15/parsed_console/job/<jobname>/15/parsed_console/log.html' in a frame because it set 'X-Frame-Options' to 'deny'.
(index):22 GET https://<jenkins_server>/<jenkins_instance>/job/<jobname>/15/parsed_console/job/<jobname>/15/parsed_console/log.html net::ERR_BLOCKED_BY_RESPONSE
1 ответ
Проблема была НЕ с плагином.
С помощью Inspect
на веб-странице было ясно, что в Apache / Nginx что-то было установлено на DENY.
Я модифицировал мой /etc/nginx/sites-enabled/jenkins_https.conf
файл
#add_header X-Frame-Options DENY;
Ран
sudo service nginx restart
Плагин теперь отображает вывод, как и ожидалось.
Другое лучшее решение:
Замените следующую строку
#add_header X-Frame-Options DENY;
со следующей строкой в вашем конфигурационном файле nginx:
add_header X-Frame-Options SAMEORIGIN;
Ссылка: https://geekflare.com/add-x-frame-options-nginx/ или https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet