Jenkins日志解析器插件 - 解析的控制台日志页面未显示X-Frame-Options拒绝加载不允许框架ERR_BLOCKED_BY_RESPONSE

时间:2017-08-21 21:46:32

标签: nginx jenkins jenkins-plugins logparser jenkins-2

Jenkins版本:1.642.3 2.32.3

詹金斯机器Ubuntu 14.04

日志解析器插件:2.0

从我的Mac OS sierra机器浏览Jenkins。

在Jenkins全局配置中,我创建了一个新条目(描述和文件路径(完整),其中文件包含以下内容)。

enter image description here

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部分内,通过选择相同的日志解析文件,我启用了“控制台输出(构建日志)解析”条目(列表框选择)。 enter image description here 我运行构建并按预期失败了。

Build step 'Console output (build log) parsing' changed build result to FAILURE

在Job的仪表板上,我看到了这一点。 enter image description here

点击 Parsed Console Output (左侧栏),将我带到一个页面,但没有给我任何有意义的信息。 enter image description here

当我将鼠标悬停在上方的条形链接上时,会显示Jenkins正在查找给定作业版本号的https://.../../parsed_console网址(如上图中的地址栏所示)。

我在这里错过了获取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上),在plugins文件夹下,我看到“log-parser.hpi”文件(最新文件和SHA与我在本地Mac机器上下载时看到的匹配)。在Jenkins重启期间,我没有看到任何与此插件相关的错误日志。

在Jenkins作业的$ JENKINS_HOME / 作业// builds / 文件夹中,我看到有效大小的有效 log * .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 &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 source code LogParserParser.java 文件)以及我在Jenkins作业的$ JENKINS_HOME / jobs // 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(仅呈现垂直条形码) 2帧之间的线(它移动)但这2帧内的内容没有任何内容(log_ref.html和log_content.html))

在Firefox中:在我的Mac计算机上的浏览器上执行检查页面以获取“Parsed Console Output”侧栏链接(请参阅:https://<jenkins_server>/<instance>/job/<job_name>/<someBuildNumber>/parsed_console),显示{{{}中的以下行1}}部分。

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

在Chrome中,在页面上执行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) 会显示以下错误(拒绝显示/帧,因为它将'X-Frame-Options'设置为'deny'/ net :: ERR_BLOCKED_BY_RESPONSE):

Inspect

1 个答案:

答案 0 :(得分: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