Плагин анализатора журнала Jenkins - проанализированная страница журнала консоли не показывает, что загрузка запрещена X-Frame-Options не разрешает фрейминг ERR_BLOCKED_BY_RESPONSE

Версия Jenkins: 1.642.3 или 2.32.3

Машина Jenkins Ubuntu 14.04

Плагин парсера логов: 2.0

Просмотр Jenkins с моей машины sierra Mac OS.

В глобальной конфигурации 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

На панели управления вакансией я вижу это. введите описание изображения здесь

Нажав на Анализированный вывод консоли (левая панель), я попадаю на страницу, не предоставляя мне какой-либо значимой информации. введите описание изображения здесь

Когда я нахожу указатель мыши на ссылку на боковой панели выше, это показывает, что Дженкинс ищет https://.../../parsed_console URL для заданного номера сборки задания (как видно в адресной строке на изображении выше).

Чего мне здесь не хватает, чтобы получить страницу вывода анализируемой консоли со всеми ошибками, предупреждениями и информационной панелью, например то, что этот плагин утверждает здесь: https://wiki.jenkins.io/download/attachments/43713289/parsed_console_output_3.JPG&apG?version=347/8000&api&apid=43713289/parsed_console_output_3. >

PS:

Внутри моего $ JENKINS_HOME (на главном сервере), в папке плагинов, я вижу файл «log-parser.hpi» (последний файл и SHA совпадает с тем, что я вижу, если я загружаю его на свой локальный компьютер Mac). Во время перезапуска Jenkins я не вижу журналов ошибок, связанных с этим плагином.

В папке $ JENKINS_HOME / jobs // builds / задания Jenkins я вижу действительные файлы log * .html с допустимым размером (они читаются этим плагином, чтобы показать информацию, когда вы щелкаете по ссылке на боковой панели «Разобранный вывод консоли».

При просмотре 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 &lt;= 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 &lt;= 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 // builds // моего задания Jenkins, я нашел журнал. 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/LogParserParserParser2

Просмотр: 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 (отображает только вертикальную полосу (она перемещается) между двумя кадрами, НО ничего для содержимого внутри эти 2 кадра (log_ref.html и log_content.html))

В Firefox: Выполнение Проверить страницу в браузере на моем компьютере Mac для ссылки на боковой панели «Обработанный вывод консоли» (относится к: 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)

В Chrome при выполнении Inspect на странице отображаются следующие ошибки (отказано в отображении / кадре, поскольку для параметра 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

person AKS    schedule 21.08.2017    source источник
comment
Добавление дополнительной информации о том, что я нахожу.   -  person AKS    schedule 23.08.2017


Ответы (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 < / а>

person AKS    schedule 23.08.2017