上网搜了好几天,遇到类似this的问题.
我需要以原始(纯)文本检索控制台输出。但是,如果我能用 HTML 得到它也很好,我总是可以解析它。唯一的事情是我需要在构建步骤中获取它 ,这是一个问题,因为它应该可用的位置被截断了......
我尝试从以下 URL(相对于作业)检索控制台输出:
/consoleText
/logText/progressiveText
/logText/progressiveHTML
这两个文本是纯文本,如果不是截断,那将是完美的,HTML 也是如此......正是我需要的 - 只有它被截断......
我确信有可能以某种方式检索此信息,因为在查看
/consoleFull
时控制台实时更新,无需截断或缓冲。然而,在检查那个网页时,我没有找到我想要的内容,而是找到了它应该在的地方(我没有包括完整的页面代码,因为它几乎是不相关的,我相信那些回答能够找出并知道自己应该有什么)
new Ajax.Request(href,{
method: "post",
parameters: {"start":e.fetchedBytes},
requestHeaders: headers,
onComplete: function(rsp,_) {
var stickToBottom = scroller.isSticking();
var text = rsp.responseText;
if(text!="") {
var p = document.createElement("DIV");
e.appendChild(p); // Needs to be first for IE
// Use "outerHTML" for IE; workaround for:
// http://www.quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html
if (p.outerHTML) {
p.outerHTML = '<pre>'+text+'</pre>';
p = e.lastChild;
}
else p.innerHTML = text;
Behaviour.applySubtree(p);
if(stickToBottom) scroller.scrollToBottom();
}
e.fetchedBytes = rsp.getResponseHeader("X-Text-Size");
e.consoleAnnotator = rsp.getResponseHeader("X-ConsoleAnnotator");
if(rsp.getResponseHeader("X-More-Data")=="true")
setTimeout(function(){fetchNext(e,href);},1000);
else
$("spinner").style.display = "none";
}
});
具体来说,我希望有一种方法可以让我从
text
获取内容不管它是什么。我不熟悉这种语言,因此不确定如何获得我想要的内容。插件无济于事,因为我想在构建步骤中检索此内容作为脚本的一部分
最佳答案
补充一些见解:当 Jenkins 构建正在进行时,对 .../consoleText URL 的响应最多达到 10000 行。
我在 Python 中使用了“requests()”包。我用 curl 尝试了相同的 URL,但又只收到了前 10K 行。
只有在构建完成后,这两种方法才会返回完整的日志(在我的例子中是 >22K 行)。
我会进一步研究并希望报告回来。
[2015-08-18] 更新:这似乎是一个已知问题(see here),它已在 Jenkins 1.618 及更高版本中修复。我仍在运行 1.615,因此无法验证。
阿米尔
关于Jenkins - 在构建步骤期间检索完整的控制台输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17792023/