将远程内容编入项目页面(来自consoleoutput中的URL)?

时间:2011-08-17 10:51:56

标签: continuous-integration hudson jenkins hudson-plugins

所有

我们有一个测试应用程序,它在Web仪表板中创建自己的报告,我们希望将其添加到Hudson项目页面中进行构建。目前,应用程序将该构建页面的URL输出到控制台日志中。

我想要做的是从控制台日志中提取URL,然后将URL端点的内容添加到该构建的项目页面(也许是IFrame?)。

有一种简单的方法吗?现有的插件也许?可能配置我忽略了?我是从Cruisecontrol来到Hudson,我仍然在处理这些差异。

感谢。

2 个答案:

答案 0 :(得分:1)

应该可以通过HTTP POST脚本编辑构建描述:在${BUILD_URL}/submitDescription处填写表单:

curl --data description="<a href=\"http://foo.bar.com\">foo</a>" ${BUILD_URL}/submitDescription

构建描述将显示在左侧构建历史记录中,因此您可能希望将其保持简短。

答案 1 :(得分:1)

最后,我采用的解决方案是创建一个自定义插件,该插件解析控制台日志,构建URL的ArrayList,并在左上栏中提供“操作”。从那里我可以从我的'bean'(有效的ArrayList包装器)中提取每个URL。之后,在Jenkins页面中创建每个iFrame只是一块Jelly。 我确实在Jelly页面添加了一些Javascript,但是因为iFrames的默认高度对我没用。

果冻:

<script type="text/javascript">
 function resizeFrame(f) {
  var i = document.getElementById(f);
  var s;
  s = 100;
  i.style.height = s;
  s = i.document.body.clientHeight;
  //Some odd Javascript re-sizing here, works fine in the debugger..
  var ss = s/2.5;
  i.style.height = ss+"px";
}
</script>

<table width='100%'>
   <j:forEach items="${it.result.getHtmlLogPath()}" var="i" indexVar="index">
    <tr>
       <td width='100%'>    
         <iframe id="myFrame${index}" src="${i}" width="100%" frameborder="0" onload="resizeFrame('myFrame${index}');"/>
       </td>
    </tr>
  </j:forEach>
</table>    

这对我目前的基本要求很有帮助,如果我有机会将其插件通用化以供其他人使用。